layers: Emit safe_*::ptr() members to eliminate some cast noise

These casts were annoying noise, and uncheckable. Move them into the
generator where we know the one type that makes sense.

Drop spurious reinterpret_cast of stage create info to itself -- it's
all raw types once the root pCreateInfo is unwrapped.

Signed-off-by: Chris Forbes <chrisforbes@google.com>
diff --git a/layers/descriptor_sets.h b/layers/descriptor_sets.h
index 05e2893..ecc6601 100644
--- a/layers/descriptor_sets.h
+++ b/layers/descriptor_sets.h
@@ -163,12 +163,12 @@
 VkDescriptorSetLayoutBinding const *DescriptorSetLayout::GetDescriptorSetLayoutBindingPtrFromBinding(const uint32_t binding) {
     if (!binding_to_index_map_.count(binding))
         return nullptr;
-    return reinterpret_cast<VkDescriptorSetLayoutBinding const *>(bindings_[binding_to_index_map_[binding]]);
+    return bindings_[binding_to_index_map_[binding]]->ptr();
 }
 VkDescriptorSetLayoutBinding const *DescriptorSetLayout::GetDescriptorSetLayoutBindingPtrFromIndex(const uint32_t index) {
     if (index >= bindings_.size())
         return nullptr;
-    return reinterpret_cast<VkDescriptorSetLayoutBinding const *>(bindings_[index]);
+    return bindings_[index]->ptr();
 }
 // Return descriptorCount for given binding, 0 if index is unavailable
 uint32_t DescriptorSetLayout::GetDescriptorCountFromBinding(const uint32_t binding) {
@@ -271,4 +271,4 @@
     }
     return true;
 }
-#endif // CORE_VALIDATION_DESCRIPTOR_SETS_H_
\ No newline at end of file
+#endif // CORE_VALIDATION_DESCRIPTOR_SETS_H_