Reduce the complexity of VkNonDispatchableHandle

- Simplified VkNonDispatchableHandle as much as possible so
  that it's just a wrapper over a uint64_t
- Centralized casting logic in vkObject.hpp
- Explicitly changed "Cast" to "vk::Cast" to differentiate
  from vk::<object>::Cast
- Moved VkDescriptorSet operators from VulkanPlatform.h to
  VkDescriptorPool.cpp

Bug b/129979580

Change-Id: I4fe5fcfe56029c21594088d274bae862999597ad
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/32928
Tested-by: Alexis Hétu <sugoi@google.com>
Reviewed-by: Chris Forbes <chrisforbes@google.com>
Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
diff --git a/src/Vulkan/VkSampler.hpp b/src/Vulkan/VkSampler.hpp
index 4313e3c..af9da6d 100644
--- a/src/Vulkan/VkSampler.hpp
+++ b/src/Vulkan/VkSampler.hpp
@@ -116,12 +116,12 @@
 
 static inline Sampler* Cast(VkSampler object)
 {
-	return reinterpret_cast<Sampler*>(object.get());
+	return Sampler::Cast(object);
 }
 
 static inline SamplerYcbcrConversion* Cast(VkSamplerYcbcrConversion object)
 {
-	return reinterpret_cast<SamplerYcbcrConversion*>(object.get());
+	return SamplerYcbcrConversion::Cast(object);
 }
 
 } // namespace vk