layers: DrawState allows callback to set fail on DescriptorType mismatch

If the update DescriptorType does not match the layout DescriptorType, DrawState would previously bail automatically. This update flags the error and will only bail if the callback return code is VK_TRUE, like with all other validation errors.
diff --git a/layers/draw_state.cpp b/layers/draw_state.cpp
index 239a9b0..30e4ade 100644
--- a/layers/draw_state.cpp
+++ b/layers/draw_state.cpp
@@ -836,8 +836,11 @@
     skipCall |= getUpdateEndIndex(device, pLayout, pUpdateStruct, &endIndex);
     if (VK_FALSE == skipCall) {
         for (i = startIndex; i <= endIndex; i++) {
-            if (pLayout->pTypes[i] != actualType)
-                return VK_TRUE;
+            if (pLayout->pTypes[i] != actualType) {
+                skipCall |= log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType) 0, 0, 0, DRAWSTATE_DESCRIPTOR_TYPE_MISMATCH, "DS",
+                        "Descriptor update type of %s has descriptor type %s that does not match overlapping binding descriptor type of %s!",
+                        string_VkStructureType(pUpdateStruct->sType), string_VkDescriptorType(actualType), string_VkDescriptorType(pLayout->pTypes[i]));
+            }
         }
     }
     return skipCall;
@@ -923,10 +926,7 @@
                         "Descriptor update type of %s is out of bounds for matching binding %u in Layout w/ CI:\n%s!", string_VkStructureType(pUpdate->sType), binding, DSstr.c_str());
             } else { // TODO : should we skip update on a type mismatch or force it?
                 // Layout bindings match w/ update ok, now verify that update is of the right type
-                if ((skipCall = validateUpdateType(device, pLayout, pUpdate)) == VK_TRUE) {
-                    skipCall |= log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, VK_OBJECT_TYPE_DESCRIPTOR_SET, ds.handle, 0, DRAWSTATE_DESCRIPTOR_TYPE_MISMATCH, "DS",
-                            "Descriptor update type of %s does not match overlapping binding type!", string_VkStructureType(pUpdate->sType));
-                } else {
+                if ((skipCall = validateUpdateType(device, pLayout, pUpdate)) == VK_FALSE) {
                     // Save the update info
                     // TODO : Info message that update successful
                     // Create new update struct for this set's shadow copy