vulkan: Add a base struct for descriptor set layouts
There's some tricky stuff in here with properly handling Vulkan allocation scopes and reference counting. Probably best to do it once. Also, this means that common code can now take references to descriptor set layouts which seems useful.
Edited by Faith Ekstrand