vulkan: Add a ShadowTextureManager
The ShadowTextureManager class is responsible for creating and managing
textures for VulkanShadows. The textures are refcounted and stored in a
hash table, using the image as the key. When a refcount drops to
zero, the texture is removed from the hash table and deleted.
This is to prevent multiple identical textures from being created when
clients set the same shadow property on multiple windows.