Reduce stack usage
Vulkan headers
Include headers
Restructure (see desc)
fpxr::Instance now handles creating a compositor.
fpxr::Compositor handles creating an event manager.
The idea behind this is that we want to be able to use Vulkan functions
to create images, so that we can pass any valid VkImage in from an app
and then have FPXR copy it over to the VkImage that OpenXR wants to use,
meaning that you don't have to fuck around with passing images and image
views to and from OpenXR and your application.
We'll manually vkCmdCopyImage at the end of the frame before submitting
to OpenXR (i.e. when rendering a layer).
```cpp
fpxr::InstanceBuilder instance_builder{};
fpxr::Instance instance = instance_builder.SetAppName("fpxr")
.WithGraphicsAPI(fpxr::GraphicsAPI::GRAPHICS_API_HEADLESS)
.RequestValidationLayers()
.WithDebugMessenger()
.Build();
fpxr::Compositor* compositor = instance.Compositor();
fpxr::EventManager* eventManager = compositor->EventManager();
```