vulkan: load all function pointers indirectly
We already had almost all of the infrastructure for this anyway, and
there were legitimate use cases that benefit from this change. I decided
to drop the extra vk
prefix from our function pointers, because
writing VK(vk->vk
seemed a bit silly and doesn't provide any real
advantages (tab completion etc. still work on the reduced function
pointers, and development of new code can be done without loading the
function pointers anyway).
Closes #75 (closed).