Better FindGSL.cmake (fixes ROOT-6174)
Fix for ROOT-5923

Fully treat the 'xroot' protocol as the 'root*' in FindHelper. Remove warning due to a first
call of the related plugin with a wrong number of arguments.
Adapt to new reference interface
First step towards header parsing on demand

Done:
o Interface changes of RegisterModule in TInterpreter, TCling and
related classes (e.g. TROOT). The information about the classes normalised
names and related headers is passed as an array of char*. The nullptr
delimits the end of the array, a "@" is the separator between classes.

o 3 new data members of TCling:
  - std::map<size_t,std::vector<const char*>> fClassesHeadersMap: to
    store the hash of the normalised classname and list of header names
  - std::set<size_t> fLookedUpClasses: cache where the hashes of the
    normalised classed names are stored once the related headers are parsed.
  - std::map<size_t, const char*> fClassesPayloadsMap: register interrogated
    to know if the char* in the list of headers is the name of a header or
    a full inlined header.
  The choice of not using unordered containers was done in order to be able
  to calculate the hash of normalised classes once. The set of looked up
  classes is a "barrier" imposed to avoid useless parsing and performant
  penalties.
o TCling::RegisterModule fills the aforementioned containers if necessary
  analysing the content of the passed char*[].

o RootCling:
  - Detects header files related to a decl for simple classes
    (see below)
  - Add to the dictionaries the necessary information (class-headers)
    to be passed to RegisterModule. This information is located in an
    anonymous namespace as const static char* []. It is therefore safe
    to treat these "names" as const char*.
  - If header inlining is active, insert the inline header char*
    in the list of headers, detecting if the name of the header
    where the decl is is the same of the genreflex argument

Todo:
o Better treatment of templates and identification of headers of
  dependent types and argument types.
o Rely on existing autoloading callbacks (TClingCallbacks) to carry
  out the actual on demand parsing after interrogating the aforementioned
  containers.

Various cleanups and minor performance optimisations e.g.:
o Transformation of some hot containers in unordered containers
o Transformation of lenghty loops into compact range-based loops
Both points only for classes which are ROOT6 specific as c++11 is involved.
Remove llvm assert

this assert was there since all template arguments were asked as
types without filtering out the cases where this was ill defined.
For example:
template <int I> myClass{};
Add Anna
.namespace command.
Clean up.
Don't unload decls came from vtable emission.
Move the restore point before the actual unload, i.e exclusive restore point.

Thus we can handle the cases where libraries are loaded. That case is tricky
because during library's static initialization, header parsing might occur (resulting
in more decls that need to be unloaded). With the exclusive restore point, we
will undo everything up to it, which implicitly will unload the library and
it's friends.
Style.
Implement an interface for file/librarly lookup, given the interpreter and system inc paths.
Library unloading should be the same as file unloading for TCling.
Use the canonical paths to the files/libraries to unload.
Simplify and extend the dynamic library manager.

Now it provides an interface which can lookup library names. It can unload a
library and the implementation of loading and resolving a library name is much
simpler.

The extensions are greatly used by the unloading facilities in cling its users.
Consistent argument names.
Coding convention.
If cling::Value is provided turn result evaluation on.
In cases of nested parsing at execution time, sometimes we need to do LookupFile without current file lexer.
Fix https://sft.its.cern.ch/jira/browse/ROOT-6209