Correct handling of array types in TMetaUtils::GetUnderlyingType.

Commit 6cb16e4d279 introduced a loop but the code handling the array was not
properly updated (was still using the type as it was before entering the loop).
Fix template parameters and data members of (Subst)TemplateParmTypeType.
Synthesize throwing of exception to handle the null deref.
Add forgotten to commit file.
Add missing header method declarations.
Use default cling style for naming classes.
Add base class for the interpreter's runtime exceptions.
Handle the default interpreter's runtime exception.
Commit Interpreter.cpp with dumpLookupTable() function not working yet.

This will be fully operational after the LLVM/Clang update.
Commit of storeState/compareState that now print lookup table
and included files

Implementation of .files moved in the Interpreter.cpp

storeState now calls three functions: dumpAST(), dumpLookup(), printIncludedFiles().
compareState now calls three functions: compareAST(), compareLookup(), compareIncludedFiles().
It's working for the included files and the AST, and it needs a new patch for
being able to dump the lookup tables (we cannot use dumpLookups() for the moment).
Remove the unused code.
Improve the look&feel of the exception classes.
Handle better the exceptions.
Don't use local type as template argument.
fix to pass search path for alternative gcc compiler and toolchain (ROOT-5384).
fine tune the alternative gcc include paths.
Check for validity of global address; fixes crash right-clicking hsimple
Fix ROOT-4786.

We introduce another map which contains the libraries for the first template.
Thus will allow sema to pull in the template definition and later on (when
we implement the proper callback) it will deserialize the concrete template
instantiation and load the concrete library.
Move the definition of P next to the others
The PP.LookAhead(0) changes the state of the PP so we need to recover too.