Simplify Vulkan's backend initialization code by moving it to a separate file, allowing us to initialize a Vulkan instance from different backends.
Allows sharing Vulkan wrapper code between different rendering backends.
Allows us to initialize a Vulkan dynamic library from different backends without duplicating code.