It took a few commits (squashed down into 1) to get it correct. Includes:
Use loader_heap_{alloc|free}().
Try to deal correctly with initializing the vkCreate*SurfaceKHR()'s.
GetInstancePorcAddr() is specified to return trampoline entrypoints for all
Vulkan core and extension entrypoints that are dispatched on an instance object
or a child of that instance object. However, typically, device extensions would
be unknown to the loader (don't want to rev the loader everytime an IHV creates
a new device extension).
This patch allows loader to dynamically discover device extension entrypoints
and configure generic trampoline code for these discovered device extensions.