We need to expand special substitutions names in four different ways, and were doing it with 4 different switch blocks. This refactors the demangler to only have one conversion from enum to string, and derive the other 3 needs off that.
If we base the SpecialSubstitution node from the ExpandedSpecialSubstitution, this reuse becomes simpler. While this may seem the wrong derivation, it works out quite well, as the SpecialSubstitution can then use the later's getBaseName and remove an unneeded 'basic_' prefix, for those substitutions that are instantiations (to known typedef).
Similarly all those instantiations use the same set of template arguments (with 'basic_string', getting an additional 'allocator' arg). There's no need to write each one separately.
Expansion tests were added in D123134, and remain unchanged.