Improve Vulkan loading and organization

Load the Vulkan library at runtime and build our own dispatch table. This alleviates the need for DYLD_FALLBACK_LIBRARY_PATH on Mac/MoltenVK, will allow us to continue targeting Android 21 (which doesn't have Vulkan libraries to link against), and removes our requirement for the $VULKAN_SDK environment variable during build.

Split out the lower level functionality within
PLSRenderContextVulkanImpl to a new "VulkanContext" class, which also hosts the Vulkan dispatch table.

Instead of using Vulkan APIs directly to initialize our context, use the vk-bootstrap library. (We only incorporate this library for tests and path_fiddle; it's not part of the core renderer.)

Split out the headless functionality from fiddle_context_vulkan into a separate class. We don't build GLFW on Android and will need a Vulkan context.

Diffs=
46a3045ae Improve Vulkan loading and organization (#7873)

Co-authored-by: Chris Dalton <99840794+csmartdalton@users.noreply.github.com>
diff --git a/.rive_head b/.rive_head
index dce3e71..481c9cb 100644
--- a/.rive_head
+++ b/.rive_head
@@ -1 +1 @@
-160d9eefb4d3e42b620053987fcc8654e98d40a6
+46a3045ae0a8bc9ab0cbbc61f37a49d13e60a3ed
diff --git a/build/build_rive.sh b/build/build_rive.sh
index 30ad087..e091ec0 100755
--- a/build/build_rive.sh
+++ b/build/build_rive.sh
@@ -270,7 +270,7 @@
         if [[ $# = 0 ]]; then
             echo 'No targets specified for xcode: Attempting to grok them from "xcodebuild -list".'
             XCODE_SCHEMES=$(for f in $(xcodebuild -list -workspace $RIVE_OUT/rive.xcworkspace | grep '^        '); do printf " $f"; done)
-            echo "  -> groked:$XCODE_SCHEMES"
+            echo "  -> grokked:$XCODE_SCHEMES"
         else
             XCODE_SCHEMES="$@"
         fi