layers: Fix DrawState to correctly handle dynamic state from PSO and CmdSet* calls

Track which dynamic states are set via PSO and merge that with dynamic state set by CmdSet* cmds.

Updated viewport not set test to pass when scissor is flagged as missing. Currently scissor and viewport set together so scissor error masks viewport error.
diff --git a/tests/layer_validation_tests.cpp b/tests/layer_validation_tests.cpp
index d410afa..b11505d 100644
--- a/tests/layer_validation_tests.cpp
+++ b/tests/layer_validation_tests.cpp
@@ -1066,8 +1066,9 @@
 
     msgFlags = m_errorMonitor->GetState(&msgString);
     ASSERT_TRUE(0 != (msgFlags & VK_DBG_REPORT_ERROR_BIT)) << "Did not receive an error from Not Binding a Viewport State Object";
-    if (!strstr(msgString.c_str(),"Dynamic viewport state not set for this command buffer")) {
-        FAIL() << "Received: '" << msgString.c_str() << "' Expected: 'Dynamic viewport state not set for this command buffer'";
+    // TODO : Viewport and scissor currently set as a pair in framework so scissor error masks viewport error
+    if (!strstr(msgString.c_str(),"Dynamic scissor state not set for this command buffer")) {
+        FAIL() << "Received: '" << msgString.c_str() << "' Expected: 'Dynamic scissor state not set for this command buffer'";
     }
 }