This patch attempts to remove the coupling between ClangASTContext and DWARF debug information. Previously, TypeSystem exposed a method called GetDWARFParser, which means that any TypeSystem had to have some concept of DWARF. If we want to implement a PDB TypeSystem though, it doesn't make sense to support DWARF, and we don't want to go adding something like GetPDBParser to the generic TypeSystem either.
This patch removes all of this code from TypeSystem and implements it specifically on ClangASTContext. SymbolFileDWARF and related classes (which are all DWARF specific anyway) can now use llvm casting mechanics to check if the TypeSystem is a ClangASTContext, and if so it can use GetDWARFParser.
In a followup patch, this will allow PDB and DWARF debug information to in theory live side by side for the same module.
This patch doesn't introduce a PDBASTParser yet, it just lays the framework to make this possible in a followup patch.