Add Bazel buffet rules for Vulkan Ganesh backend

To my knowledge, Skia does not have any platform specific helpers
for Vulkan, so we only need to expose a general "ganesh_vulkan"
backend for clients to use.

Setting up a Vulkan context properly is a lot of work, so instead
of doing so, the ganesh_vulkan.cpp example ignores that but does
call the Skia commands necessary to make a backend from a context
to make sure things compile and link (which they do on Linux, at least).

We don't want our Bazel rules to use the local copy of Vulkan headers
since that would make it much more difficult for a client to
swap out different headers, so instead we add a new define
SK_USE_EXTERNAL_VULKAN_HEADERS to allow us to disable those
explicitly. We don't yet set SK_VULKAN since I wanted to make sure
things work without needing that define for the sake of modularity.
(We may add it back in to signal to tests/clients that it is compiled
in. It is currently used in Graphite code though, so that will take
some refactoring).

Bug: b/293490566
Change-Id: I5f53c2a6f562854e5d6625ad2259a93a3f111886
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/804136
Reviewed-by: Greg Daniel <egdaniel@google.com>
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Kevin Lubick <kjlubick@google.com>
15 files changed