Autogenererating enum-string mappings from grammar

Autogenerating the following code:
- extension enum
- extension-to-string
- string-to-extension
- capability-to-string

Capability mapping table will not compile if incomplete.
TODO: Use "spirv-latest-version.h" instead of 1.1.

Added function to generate capability tables for tests.
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index 10b4cb0..79c2684 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -52,6 +52,7 @@
       ${spirv-tools_SOURCE_DIR}
       ${spirv-tools_SOURCE_DIR}/include
       ${spirv-tools_SOURCE_DIR}/test
+      ${spirv-tools_BINARY_DIR}
       ${gtest_SOURCE_DIR}/include
       ${gmock_SOURCE_DIR}/include
     )
@@ -75,6 +76,7 @@
   binary_to_text_test.cpp
   binary_to_text.literal_test.cpp
   comment_test.cpp
+  enum_string_mapping_test.cpp
   enum_set_test.cpp
   ext_inst.glsl_test.cpp
   ext_inst.opencl_test.cpp