Premise is to let the easy creation of a compute or transfer queue.
If the user supplies a custom list they want to use, defer to that.
Else, enable the basic requirements and be on your merry way.
Allocators only complicated the interface and likely aren't needed. They
are useful on other function calls, but none of the ones here mattered.
A constructor was added to swapchain that has all the handles it needs.
This way users don't have to pass in the vkb::Device struct to use the
swapchain builder
Before it only had 1 priority even if there were multiple queues.
Now it creates a vector of priorities so it shouldn't cause issues.
It also means logic to setup actual priority values can be put in place
in the future
Now there is a concise example of the library in use all the way to presenting.
Needs to be rewritten to remove exceptions, but for first pass its good enough.