layers: Fix Graphics Pipeline pointers not ignored

Some VkGraphicsPipelineCreateInfo pointers must be ignored under some
conditions, but were not in the layers.

Add relevant tests.

Fix tests found broken (using depth or color without attachment in
subpass)

Change-Id: I3e2a3f61a52c72ce3a11483ff8b031189f4c61c9
diff --git a/layers/parameter_validation.h b/layers/parameter_validation.h
index 6ef3de2..b9d153c 100644
--- a/layers/parameter_validation.h
+++ b/layers/parameter_validation.h
@@ -25,8 +25,9 @@
 #include <cstdlib>
 #include <string>
 #include <bitset>
-#include <mutex>
+#include <unordered_map>
 #include <unordered_set>
+#include <mutex>
 
 #include "vulkan/vulkan.h"
 #include "vk_enum_string_helper.h"
@@ -80,6 +81,13 @@
     VkDevice device = VK_NULL_HANDLE;
     DeviceExtensions extensions;
 
+    struct SubpassesUsageStates {
+        std::unordered_set<uint32_t> subpasses_using_color_attachment;
+        std::unordered_set<uint32_t> subpasses_using_depthstencil_attachment;
+    };
+
+    std::unordered_map<VkRenderPass, SubpassesUsageStates> renderpasses_states;
+
     VkLayerDispatchTable dispatch_table = {};
 };