This commit shuffles SPIR-V code around to better follow MLIR
convention. Specifically,
- Created IR/, Transforms/, Linking/, and Utils/ subdirectories and moved suitable code inside.
- Created SPIRVEnums.{h|cpp} for SPIR-V C/C++ enums generated from SPIR-V spec. Previously they are cluttered inside SPIRVTypes.{h|cpp}.
- Fixed include guards in various header files (both .h and .td).
- Moved serialization tests under test/Target/SPIRV.
- Renamed TableGen backend -gen-spirv-op-utils into -gen-spirv-attr-utils as it is only generating utility functions for attributes.