[vulkan] VulkanHandleMapping abstract class

bug: 111137294
bug: 119104304
bug: 119157982

This sets the stage to easily generate code related to resource
tracking for the encoder.

The abstraction approach is as follows:

1. When we do anything to a Vulkan resource, it's going to be an
operation on one or more Vulkan handles, so the basic abstract method
is going to be some map operation on an array of Vulkan handles.
2. Sometimes we replace the handle with another, such as when we
are unwrapping the host Vulkan handle, or wrapping up a host Vulkan
handle in our internal structs. So the array of handles allows
write as well as read.
3. The most important operations are create/destroy/unwrap, which all
work well in terms of the handle mapping operation.

So, the VulkanHandleMapping abstract class consists of map operations
for each Vulkan handle type.

The actual classes that create/destroy/unwrap will implement this
interface.

Change-Id: If00e78e092d2eeba40f916c18c212893c73db073
1 file changed