Added Pass and PassQueue to Spirit

Bug: 30964317

Reorganized rs2spirv using PassQueue.

Changed LiteralString from const char * to std::string, so that the
life cycle of the underneath string is correctly managed.

Improved Transformer so that it can capture changes made to the
global or decoration section while transforming function defintions.

Fixed #include order per LLVM coding convention.

Test: unit tests, lit tests, and RSoVTest

Change-Id: I93b2588f94541ae90d3a847ce3fc3eaa941b7a59
diff --git a/rsov/compiler/spirit/module.h b/rsov/compiler/spirit/module.h
index 7ec41ff..a69d255 100644
--- a/rsov/compiler/spirit/module.h
+++ b/rsov/compiler/spirit/module.h
@@ -23,6 +23,7 @@
 
 #include "core_defs.h"
 #include "entity.h"
+#include "instructions.h"
 #include "stl_util.h"
 #include "types_generated.h"
 #include "visitor.h"
@@ -134,6 +135,10 @@
   getFunctionDefinitionFromInstruction(FunctionInst *) const;
   FunctionDefinition *lookupFunctionDefinitionByName(const char *name) const;
 
+  // Find the name of the instruction, e.g., the name of a function (OpFunction
+  // instruction).
+  // The returned string is owned by the OpName instruction, whose first operand
+  // is the instruction being queried on.
   const char *lookupNameByInstruction(const Instruction *) const;
 
   VariableInst *getInvocationId();