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.