Add core validation for VK_KHR_get_display_properties2

This adds core validation for VK_KHR_get_display_properties2, which is
based on the existing validation for the corresponding functions in
VK_KHR_display. The VK_KHR_get_display_properties2 has no explicit VUs,
only implicit ones that correct generated in the param validation
layer.

This MR also adds object tracking for VkDisplayKHR and
VkDisplayModeKHR for both VK_KHR_display and
VK_KHR_get_display_properties2. Note that the lifetime of these objects
is tied to the physical device. They aren't "created" just queried by
the application. Similar to how VkQueue objects are with respect to a
VkDevice.

This has been tested with the Vulkan CTS
VK_KHR_get_display_properties2 tests and showed some valid usage
violations in the test. These violations are reported here
Tracker/vk-gl-cts#1155 (closed) and fixed here
https://gerrit.khronos.org/#/c/2507/.
diff --git a/scripts/object_tracker_generator.py b/scripts/object_tracker_generator.py
index 710d1e9..0a6626a 100644
--- a/scripts/object_tracker_generator.py
+++ b/scripts/object_tracker_generator.py
@@ -188,6 +188,9 @@
             'vkCmdInsertDebugUtilsLabelEXT',
             'vkGetDisplayModePropertiesKHR',
             'vkGetPhysicalDeviceDisplayPropertiesKHR',
+            'vkGetPhysicalDeviceDisplayProperties2KHR',
+            'vkGetDisplayPlaneSupportedDisplaysKHR',
+            'vkGetDisplayModeProperties2KHR',
             ]
         # These VUIDS are not implicit, but are best handled in this layer. Codegen for vkDestroy calls will generate a key
         # which is translated here into a good VU.  Saves ~40 checks.