layers: MR75, Merge DrawState and ShaderChecker into DrawState layer

This is the initial "dumb" merge where a few data structures are now duplicated
within DrawState. This is intentional to simplify the transition and a follow-on
commit will fix these inefficiencies.

Conflicts:
	layers/draw_state.cpp
diff --git a/layers/draw_state.h b/layers/draw_state.h
index ce77bea..7d9d6b9 100755
--- a/layers/draw_state.h
+++ b/layers/draw_state.h
@@ -1,6 +1,7 @@
 /*
  *
  * Copyright (C) 2015 Valve Corporation
+ * Copyright (C) 2015 Google, Inc.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a
  * copy of this software and associated documentation files (the "Software"),
@@ -20,15 +21,31 @@
  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
  * DEALINGS IN THE SOFTWARE.
  *
- * Author: Courtney Goeltzenleuchter <courtney@LunarG.com>
- * Author: Tobin Ehlis <tobin@lunarg.com>
+ * Author: Courtney Goeltzenleuchter <courtneygo@google.com>
+ * Author: Tobin Ehlis <tobine@google.com>
+ * Author: Chris Forbes <chrisf@ijw.co.nz>
  */
 #include "vulkan/vk_layer.h"
+#include "vulkan/vk_lunarg_debug_report.h"
 #include <vector>
 #include <memory>
-#include "vulkan/vk_lunarg_debug_report.h"
 
-using namespace std;
+using std::vector;
+
+/* Shader checker error codes */
+typedef enum _SHADER_CHECKER_ERROR
+{
+    SHADER_CHECKER_NONE,
+    SHADER_CHECKER_FS_MIXED_BROADCAST,      /* FS writes broadcast output AND custom outputs */
+    SHADER_CHECKER_INTERFACE_TYPE_MISMATCH, /* Type mismatch between shader stages or shader and pipeline */
+    SHADER_CHECKER_OUTPUT_NOT_CONSUMED,     /* Entry appears in output interface, but missing in input */
+    SHADER_CHECKER_INPUT_NOT_PRODUCED,      /* Entry appears in input interface, but missing in output */
+    SHADER_CHECKER_NON_SPIRV_SHADER,        /* Shader image is not SPIR-V */
+    SHADER_CHECKER_INCONSISTENT_SPIRV,      /* General inconsistency within a SPIR-V module */
+    SHADER_CHECKER_UNKNOWN_STAGE,           /* Stage is not supported by analysis */
+    SHADER_CHECKER_INCONSISTENT_VI,         /* VI state contains conflicting binding or attrib descriptions */
+    SHADER_CHECKER_MISSING_DESCRIPTOR,      /* Shader attempts to use a descriptor binding not declared in the layout */
+} SHADER_CHECKER_ERROR;
 
 // Draw State ERROR codes
 typedef enum _DRAW_STATE_ERROR