Rearrange headers

Now we have public headers arranged as follows:
$SPIRV_TOOLS_ROOT/include/spirv-tools/libspirv.h
$SPIRV_TOOLS_ROOT/include/spirv/spirv.h
$SPIRV_TOOLS_ROOT/include/spirv/GLSL.std.450.h
$SPIRV_TOOLS_ROOT/include/spirv/OpenCL.std.h

A project should use -I$SPIRV_TOOLS_ROOT/include
and then #include "spirv-tools/libspirv.h"

The headers from the SPIR-V Registry can be accessed as "spirv/spirv."
for example.

The install target should also install the headers from the SPIR-V
Registry.  The libspirv.h header is broken otherwise.

The SPIRV-Tools library depends on the headers from the SPIR-V Registry.

The util/bitutils.h and util/hex_float.h are pulled into the internal
source tree.  Those are not part of the public API to SPIRV-Tools.
diff --git a/CMakeLists.txt b/CMakeLists.txt
index f200b09..f9f56eb 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -104,9 +104,12 @@
 endfunction()
 
 set(SPIRV_SOURCES
-  ${CMAKE_CURRENT_SOURCE_DIR}/include/libspirv/libspirv.h
-  ${CMAKE_CURRENT_SOURCE_DIR}/include/util/bitutils.h
-  ${CMAKE_CURRENT_SOURCE_DIR}/include/util/hex_float.h
+  ${CMAKE_CURRENT_SOURCE_DIR}/include/spirv-tools/libspirv.h
+  ${CMAKE_CURRENT_SOURCE_DIR}/include/spirv/spirv.h
+  ${CMAKE_CURRENT_SOURCE_DIR}/include/spirv/GLSL.std.450.h
+  ${CMAKE_CURRENT_SOURCE_DIR}/include/spirv/OpenCL.std.h
+  ${CMAKE_CURRENT_SOURCE_DIR}/source/util/bitutils.h
+  ${CMAKE_CURRENT_SOURCE_DIR}/source/util/hex_float.h
   ${CMAKE_CURRENT_SOURCE_DIR}/source/assembly_grammar.h
   ${CMAKE_CURRENT_SOURCE_DIR}/source/binary.h
   ${CMAKE_CURRENT_SOURCE_DIR}/source/diagnostic.h
@@ -145,9 +148,7 @@
 
 add_library(${SPIRV_TOOLS} ${SPIRV_SOURCES})
 spvtools_default_compile_options(${SPIRV_TOOLS})
-target_include_directories(${SPIRV_TOOLS} PUBLIC
-  ${CMAKE_CURRENT_SOURCE_DIR}/include
-  ${CMAKE_CURRENT_SOURCE_DIR}/external/include)
+target_include_directories(${SPIRV_TOOLS} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include)
 
 # Defaults to OFF if the user didn't set it.
 option(SPIRV_SKIP_EXECUTABLES
@@ -277,5 +278,11 @@
   LIBRARY DESTINATION lib
   ARCHIVE DESTINATION lib)
 
-install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/include/libspirv/libspirv.h
-  DESTINATION include/libspirv/)
+install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/include/spirv-tools/libspirv.h
+  DESTINATION include/spirv-tools/)
+# The installation is broken without these header files from the SPIR-V Registry.
+# The libspirv.h header includes them.
+install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/include/spirv/spirv.h
+              ${CMAKE_CURRENT_SOURCE_DIR}/include/spirv/GLSL.std.450.h
+              ${CMAKE_CURRENT_SOURCE_DIR}/include/spirv/OpenCL.std.h
+  DESTINATION include/spirv/)
diff --git a/include/libspirv/libspirv.h b/include/spirv-tools/libspirv.h
similarity index 98%
rename from include/libspirv/libspirv.h
rename to include/spirv-tools/libspirv.h
index 25b9755..9073bcf 100644
--- a/include/libspirv/libspirv.h
+++ b/include/spirv-tools/libspirv.h
@@ -24,12 +24,12 @@
 // TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
 // MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
 
-#ifndef LIBSPIRV_LIBSPIRV_LIBSPIRV_H_
-#define LIBSPIRV_LIBSPIRV_LIBSPIRV_H_
+#ifndef SPIRV_TOOLS_LIBSPIRV_H_      
+#define SPIRV_TOOLS_LIBSPIRV_H_
 
-#include "headers/GLSL.std.450.h"
-#include "headers/OpenCL.std.h"
-#include "headers/spirv.h"
+#include "spirv/GLSL.std.450.h"
+#include "spirv/OpenCL.std.h"
+#include "spirv/spirv.h"
 
 #ifdef __cplusplus
 extern "C" {
@@ -448,4 +448,4 @@
 }
 #endif
 
-#endif  // LIBSPIRV_LIBSPIRV_LIBSPIRV_H_
+#endif  // SPIRV_TOOLS_LIBSPIRV_H_
diff --git a/external/include/headers/GLSL.std.450.h b/include/spirv/GLSL.std.450.h
similarity index 100%
rename from external/include/headers/GLSL.std.450.h
rename to include/spirv/GLSL.std.450.h
diff --git a/external/include/headers/OpenCL.std.h b/include/spirv/OpenCL.std.h
similarity index 100%
rename from external/include/headers/OpenCL.std.h
rename to include/spirv/OpenCL.std.h
diff --git a/external/include/headers/spirv.h b/include/spirv/spirv.h
similarity index 100%
rename from external/include/headers/spirv.h
rename to include/spirv/spirv.h
diff --git a/external/include/headers/spirv.py b/include/spirv/spirv.py
similarity index 100%
rename from external/include/headers/spirv.py
rename to include/spirv/spirv.py
diff --git a/source/assembly_grammar.h b/source/assembly_grammar.h
index 15f34da..fab31b8 100644
--- a/source/assembly_grammar.h
+++ b/source/assembly_grammar.h
@@ -27,8 +27,8 @@
 #ifndef LIBSPIRV_ASSEMBLY_GRAMMAR_H_
 #define LIBSPIRV_ASSEMBLY_GRAMMAR_H_
 
-#include "libspirv/libspirv.h"
 #include "operand.h"
+#include "spirv-tools/libspirv.h"
 #include "table.h"
 
 namespace libspirv {
diff --git a/source/binary.cpp b/source/binary.cpp
index bedd3b0..4db3226 100644
--- a/source/binary.cpp
+++ b/source/binary.cpp
@@ -36,9 +36,9 @@
 #include "assembly_grammar.h"
 #include "diagnostic.h"
 #include "ext_inst.h"
-#include "libspirv/libspirv.h"
 #include "opcode.h"
 #include "operand.h"
+#include "spirv-tools/libspirv.h"
 #include "spirv_constant.h"
 #include "spirv_endian.h"
 
diff --git a/source/binary.h b/source/binary.h
index c51fe5f..7155597 100644
--- a/source/binary.h
+++ b/source/binary.h
@@ -27,7 +27,7 @@
 #ifndef LIBSPIRV_BINARY_H_
 #define LIBSPIRV_BINARY_H_
 
-#include "libspirv/libspirv.h"
+#include "spirv-tools/libspirv.h"
 #include "table.h"
 
 // Functions
diff --git a/source/diagnostic.cpp b/source/diagnostic.cpp
index 60502c0..a785354 100644
--- a/source/diagnostic.cpp
+++ b/source/diagnostic.cpp
@@ -31,7 +31,7 @@
 
 #include <iostream>
 
-#include "libspirv/libspirv.h"
+#include "spirv-tools/libspirv.h"
 
 // Diagnostic API
 
diff --git a/source/diagnostic.h b/source/diagnostic.h
index c80b77d..38a35ea 100644
--- a/source/diagnostic.h
+++ b/source/diagnostic.h
@@ -31,7 +31,7 @@
 #include <sstream>
 #include <utility>
 
-#include "libspirv/libspirv.h"
+#include "spirv-tools/libspirv.h"
 
 namespace libspirv {
 
diff --git a/source/disassemble.cpp b/source/disassemble.cpp
index 1605924..9fae7e5 100644
--- a/source/disassemble.cpp
+++ b/source/disassemble.cpp
@@ -36,9 +36,9 @@
 #include "binary.h"
 #include "diagnostic.h"
 #include "ext_inst.h"
-#include "libspirv/libspirv.h"
 #include "opcode.h"
 #include "print.h"
+#include "spirv-tools/libspirv.h"
 #include "spirv_constant.h"
 #include "spirv_endian.h"
 #include "util/hex_float.h"
diff --git a/source/ext_inst.h b/source/ext_inst.h
index 1fd5813..f4dcecb 100644
--- a/source/ext_inst.h
+++ b/source/ext_inst.h
@@ -27,7 +27,7 @@
 #ifndef LIBSPIRV_EXT_INST_H_
 #define LIBSPIRV_EXT_INST_H_
 
-#include "libspirv/libspirv.h"
+#include "spirv-tools/libspirv.h"
 #include "table.h"
 
 // Gets the type of the extended instruction set with the specified name.
diff --git a/source/instruction.h b/source/instruction.h
index 61549b6..9188592 100644
--- a/source/instruction.h
+++ b/source/instruction.h
@@ -30,7 +30,7 @@
 #include <cstdint>
 #include <vector>
 
-#include "headers/spirv.h"
+#include "spirv/spirv.h"
 
 #include "table.h"
 
diff --git a/source/opcode.cpp b/source/opcode.cpp
index 68c45bb..63ba9a9 100644
--- a/source/opcode.cpp
+++ b/source/opcode.cpp
@@ -32,7 +32,7 @@
 #include <cstdlib>
 
 #include "instruction.h"
-#include "libspirv/libspirv.h"
+#include "spirv-tools/libspirv.h"
 #include "spirv_constant.h"
 #include "spirv_endian.h"
 #include "spirv_operands.h"
diff --git a/source/opcode.h b/source/opcode.h
index 8fe9e1f..e6ff14a 100644
--- a/source/opcode.h
+++ b/source/opcode.h
@@ -28,7 +28,7 @@
 #define LIBSPIRV_OPCODE_H_
 
 #include "instruction.h"
-#include "libspirv/libspirv.h"
+#include "spirv-tools/libspirv.h"
 #include "table.h"
 
 // Returns the name of a registered SPIR-V generator as a null-terminated
diff --git a/source/operand.h b/source/operand.h
index fe15a42..78fc918 100644
--- a/source/operand.h
+++ b/source/operand.h
@@ -29,7 +29,7 @@
 
 #include <deque>
 
-#include "libspirv/libspirv.h"
+#include "spirv-tools/libspirv.h"
 #include "table.h"
 
 // A sequence of operand types.
diff --git a/source/spirv_constant.h b/source/spirv_constant.h
index 0c85fbf..3ade7cc 100644
--- a/source/spirv_constant.h
+++ b/source/spirv_constant.h
@@ -27,7 +27,7 @@
 #ifndef LIBSPIRV_SPIRV_CONSTANT_H_
 #define LIBSPIRV_SPIRV_CONSTANT_H_
 
-#include "libspirv/libspirv.h"
+#include "spirv-tools/libspirv.h"
 
 // Version number macros.
 
diff --git a/source/spirv_definition.h b/source/spirv_definition.h
index 3872e76..d7424dc 100644
--- a/source/spirv_definition.h
+++ b/source/spirv_definition.h
@@ -29,7 +29,7 @@
 
 #include <cstdint>
 
-#include "libspirv/libspirv.h"
+#include "spirv-tools/libspirv.h"
 
 // A bit mask representing a set of capabilities.
 // Currently there are 57 distinct capabilities, so 64 bits
diff --git a/source/spirv_endian.h b/source/spirv_endian.h
index 9d06b29..57ffc4f 100644
--- a/source/spirv_endian.h
+++ b/source/spirv_endian.h
@@ -27,7 +27,7 @@
 #ifndef LIBSPIRV_SPIRV_ENDIAN_H_
 #define LIBSPIRV_SPIRV_ENDIAN_H_
 
-#include "libspirv/libspirv.h"
+#include "spirv-tools/libspirv.h"
 
 // Converts a word in the specified endianness to the host native endianness.
 uint32_t spvFixWord(const uint32_t word, const spv_endianness_t endianness);
diff --git a/source/table.h b/source/table.h
index c52b9f2..9e427dd 100644
--- a/source/table.h
+++ b/source/table.h
@@ -27,7 +27,7 @@
 #ifndef LIBSPIRV_TABLE_H_
 #define LIBSPIRV_TABLE_H_
 
-#include "libspirv/libspirv.h"
+#include "spirv-tools/libspirv.h"
 #include "spirv_definition.h"
 #include "spirv_operands.h"
 
diff --git a/source/text.cpp b/source/text.cpp
index bdac21b..84b92de 100644
--- a/source/text.cpp
+++ b/source/text.cpp
@@ -43,9 +43,9 @@
 #include "diagnostic.h"
 #include "ext_inst.h"
 #include "instruction.h"
-#include "libspirv/libspirv.h"
 #include "opcode.h"
 #include "operand.h"
+#include "spirv-tools/libspirv.h"
 #include "spirv_constant.h"
 #include "table.h"
 #include "text_handler.h"
diff --git a/source/text.h b/source/text.h
index 0375522..c684174 100644
--- a/source/text.h
+++ b/source/text.h
@@ -29,8 +29,8 @@
 
 #include <string>
 
-#include "libspirv/libspirv.h"
 #include "operand.h"
+#include "spirv-tools/libspirv.h"
 #include "spirv_constant.h"
 
 typedef enum spv_literal_type_t {
diff --git a/source/text_handler.h b/source/text_handler.h
index 1e96206..6f003db 100644
--- a/source/text_handler.h
+++ b/source/text_handler.h
@@ -34,7 +34,7 @@
 
 #include "diagnostic.h"
 #include "instruction.h"
-#include "libspirv/libspirv.h"
+#include "spirv-tools/libspirv.h"
 #include "text.h"
 
 namespace libspirv {
diff --git a/include/util/bitutils.h b/source/util/bitutils.h
similarity index 100%
rename from include/util/bitutils.h
rename to source/util/bitutils.h
diff --git a/include/util/hex_float.h b/source/util/hex_float.h
similarity index 99%
rename from include/util/hex_float.h
rename to source/util/hex_float.h
index 3ed4efc..879d0ce 100644
--- a/include/util/hex_float.h
+++ b/source/util/hex_float.h
@@ -24,8 +24,8 @@
 // TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
 // MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
 
-#ifndef _LIBSPIRV_UTIL_HEX_FLOAT_H_
-#define _LIBSPIRV_UTIL_HEX_FLOAT_H_
+#ifndef LIBSPIRV_UTIL_HEX_FLOAT_H_
+#define LIBSPIRV_UTIL_HEX_FLOAT_H_
 
 #include <cassert>
 #include <cctype>
@@ -1087,4 +1087,4 @@
 }
 }
 
-#endif  // _LIBSPIRV_UTIL_HEX_FLOAT_H_
+#endif  // LIBSPIRV_UTIL_HEX_FLOAT_H_
diff --git a/source/validate.cpp b/source/validate.cpp
index f06c462..585053d 100644
--- a/source/validate.cpp
+++ b/source/validate.cpp
@@ -30,7 +30,7 @@
 #include "binary.h"
 #include "diagnostic.h"
 #include "instruction.h"
-#include "libspirv/libspirv.h"
+#include "spirv-tools/libspirv.h"
 #include "opcode.h"
 #include "operand.h"
 #include "spirv_constant.h"
diff --git a/source/validate.h b/source/validate.h
index c87aa08..d6e180a 100644
--- a/source/validate.h
+++ b/source/validate.h
@@ -34,12 +34,11 @@
 #include <utility>
 #include <vector>
 
-#include "libspirv/libspirv.h"
-
 #include "assembly_grammar.h"
 #include "binary.h"
 #include "diagnostic.h"
 #include "instruction.h"
+#include "spirv-tools/libspirv.h"
 #include "spirv_definition.h"
 #include "table.h"
 
diff --git a/source/validate_id.cpp b/source/validate_id.cpp
index f5118a8..4668504 100644
--- a/source/validate_id.cpp
+++ b/source/validate_id.cpp
@@ -31,8 +31,8 @@
 
 #include "diagnostic.h"
 #include "instruction.h"
-#include "libspirv/libspirv.h"
 #include "opcode.h"
+#include "spirv-tools/libspirv.h"
 #include "validate.h"
 
 #define spvCheck(condition, action) \
diff --git a/source/validate_layout.cpp b/source/validate_layout.cpp
index dd30c2b..42f935c 100644
--- a/source/validate_layout.cpp
+++ b/source/validate_layout.cpp
@@ -27,7 +27,7 @@
 // Source code for logical layout validation as described in section 2.4
 
 #include "validate_passes.h"
-#include "libspirv/libspirv.h"
+#include "spirv-tools/libspirv.h"
 
 #include "diagnostic.h"
 #include "opcode.h"
diff --git a/source/validate_types.cpp b/source/validate_types.cpp
index 39fcdcf..f0bb998 100644
--- a/source/validate_types.cpp
+++ b/source/validate_types.cpp
@@ -31,7 +31,7 @@
 #include <unordered_set>
 #include <vector>
 
-#include "headers/spirv.h"
+#include "spirv/spirv.h"
 
 #include "spirv_definition.h"
 #include "validate.h"
diff --git a/test/HexFloat.cpp b/test/HexFloat.cpp
index a2c5521..1c783cd 100644
--- a/test/HexFloat.cpp
+++ b/test/HexFloat.cpp
@@ -33,7 +33,7 @@
 
 #include <gmock/gmock.h>
 #include "UnitSPIRV.h"
-#include "util/hex_float.h"
+#include "source/util/hex_float.h"
 
 namespace {
 using ::testing::Eq;
diff --git a/test/ImmediateInt.cpp b/test/ImmediateInt.cpp
index ebd30a2..bdfdd87 100644
--- a/test/ImmediateInt.cpp
+++ b/test/ImmediateInt.cpp
@@ -30,8 +30,8 @@
 
 #include <gmock/gmock.h>
 
+#include "source/util/bitutils.h"
 #include "TestFixture.h"
-#include "util/bitutils.h"
 
 namespace {
 
diff --git a/test/TextToBinary.cpp b/test/TextToBinary.cpp
index 9f51867..e30e332 100644
--- a/test/TextToBinary.cpp
+++ b/test/TextToBinary.cpp
@@ -33,8 +33,8 @@
 #include "TestFixture.h"
 #include "UnitSPIRV.h"
 #include "source/spirv_constant.h"
-#include "util/bitutils.h"
-#include "util/hex_float.h"
+#include "source/util/bitutils.h"
+#include "source/util/hex_float.h"
 
 namespace {
 
diff --git a/test/UnitSPIRV.h b/test/UnitSPIRV.h
index 0264bdf..558b790 100644
--- a/test/UnitSPIRV.h
+++ b/test/UnitSPIRV.h
@@ -31,7 +31,6 @@
 
 #include <iomanip>
 
-#include "libspirv/libspirv.h"
 #include "source/assembly_grammar.h"
 #include "source/binary.h"
 #include "source/diagnostic.h"
@@ -40,6 +39,7 @@
 #include "source/text.h"
 #include "source/text_handler.h"
 #include "source/validate.h"
+#include "spirv-tools/libspirv.h"
 
 #include <gtest/gtest.h>
 
diff --git a/test/ValidationState.cpp b/test/ValidationState.cpp
index fc164b9..a172b97 100644
--- a/test/ValidationState.cpp
+++ b/test/ValidationState.cpp
@@ -30,7 +30,7 @@
 #include <gtest/gtest.h>
 #include <vector>
 
-#include "headers/spirv.h"
+#include "spirv/spirv.h"
 
 #include "source/validate.h"
 
diff --git a/tools/as/as.cpp b/tools/as/as.cpp
index 96f2cad..c7380b6 100644
--- a/tools/as/as.cpp
+++ b/tools/as/as.cpp
@@ -28,7 +28,7 @@
 
 #include <vector>
 
-#include "libspirv/libspirv.h"
+#include "spirv-tools/libspirv.h"
 
 void print_usage(char* argv0) {
   printf(
diff --git a/tools/dis/dis.cpp b/tools/dis/dis.cpp
index 48664de..cd472d0 100644
--- a/tools/dis/dis.cpp
+++ b/tools/dis/dis.cpp
@@ -29,7 +29,7 @@
 #include <string>
 #include <vector>
 
-#include "libspirv/libspirv.h"
+#include "spirv-tools/libspirv.h"
 
 static void print_usage(char* argv0) {
   printf(
diff --git a/tools/val/val.cpp b/tools/val/val.cpp
index bc29dd4..db05364 100644
--- a/tools/val/val.cpp
+++ b/tools/val/val.cpp
@@ -30,7 +30,7 @@
 
 #include <vector>
 
-#include "libspirv/libspirv.h"
+#include "spirv-tools/libspirv.h"
 
 void print_usage(char* argv0) {
   printf(