This fixes up the matcher fallout from D120905
- Add instantiation tests to ItaniumDemangleTest, to make sure all match functions provide constructor arguments to the provided functor. This found some problems ...
- Fix the Node constructors that lost const qualification on arguments.
The node names are broken out into a def file by D122739, which this depends upon
The modules-unfriendly nature of this worries me a bit.
Maybe we could change the FOR_EACH_NODE_KIND to a .def file instead? (basically take the macro out, put it in another (includable, intentionally non-modular) file that calls the includer-defined macro & undefs the macro at the end (so it doesn't persist/pollute other things))
We have a lot of these in LLVM, one example (though it handles a variet of different lists, which adds more complexity than will be needed here) is llvm/include/llvm/BinaryFormat/Dwarf.def