layers: Add ValidationStateTracker::CreateDevice

This virtual method can be used to do device level setup.
PostCallRecordCreateDevice() gets called on the validation object
representing the VkInstance, making it awkward to set up the device
state object there.
diff --git a/layers/synchronization_validation.cpp b/layers/synchronization_validation.cpp
index 4d0ac53..ed3384e 100644
--- a/layers/synchronization_validation.cpp
+++ b/layers/synchronization_validation.cpp
@@ -3734,24 +3734,15 @@
                                                            *pDependencyInfo);
 }
 
-void SyncValidator::PostCallRecordCreateDevice(VkPhysicalDevice gpu, const VkDeviceCreateInfo *pCreateInfo,
-                                               const VkAllocationCallbacks *pAllocator, VkDevice *pDevice, VkResult result) {
+void SyncValidator::CreateDevice(const VkDeviceCreateInfo *pCreateInfo) {
     // The state tracker sets up the device state
-    StateTracker::PostCallRecordCreateDevice(gpu, pCreateInfo, pAllocator, pDevice, result);
+    StateTracker::CreateDevice(pCreateInfo);
 
     // Add the callback hooks for the functions that are either broadly or deeply used and that the ValidationStateTracker
     // refactor would be messier without.
     // TODO: Find a good way to do this hooklessly.
-    ValidationObject *device_object = GetLayerDataPtr(get_dispatch_key(*pDevice), layer_data_map);
-    ValidationObject *validation_data = GetValidationObject(device_object->object_dispatch, LayerObjectTypeSyncValidation);
-    SyncValidator *sync_device_state = static_cast<SyncValidator *>(validation_data);
-
-    sync_device_state->SetCommandBufferResetCallback([sync_device_state](VkCommandBuffer command_buffer) -> void {
-        sync_device_state->ResetCommandBufferCallback(command_buffer);
-    });
-    sync_device_state->SetCommandBufferFreeCallback([sync_device_state](VkCommandBuffer command_buffer) -> void {
-        sync_device_state->FreeCommandBufferCallback(command_buffer);
-    });
+    SetCommandBufferResetCallback([this](VkCommandBuffer command_buffer) -> void { ResetCommandBufferCallback(command_buffer); });
+    SetCommandBufferFreeCallback([this](VkCommandBuffer command_buffer) -> void { FreeCommandBufferCallback(command_buffer); });
 }
 
 bool SyncValidator::ValidateBeginRenderPass(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo *pRenderPassBegin,