Add support for kCharStar in CompareContent
Use CompareContent also in PostLoadCheck
Bundle the looping over the legacy checksum check.

Add TClass::MatchLegacyCheckSum and TStreamerInfo::MatchLegacyCheckSum
to factor the looping over the set of legacy version of the checksum
calculations.
Expand doc to add some more historical information.
Consistently use ECheckSum.

ELegacyCheckSum has been renamed ECheckSum and is now used as part
of the GetCheckSum interface.

Conflicts:
	core/meta/src/TClass.cxx
Fix direction of error message
Add code for backward comp. for broken case of abstract classes.

The code would be necessary only in very rare case and is added
here (but hidden behind an ifdef) in case this becomes a blocker.
One of the case would an abstract class that was written to
ROOT file older than v5.18 and in a circurcunstance that led
to an empty TStreamerInfo to be stored in the file and
if in addition one of the data member was declared using a
typedef _and_ the current class definition uses a different typedef.
Fix CompareContent for collection with typedef.

When testing a collection and there is a name mismatch, check not only
the name but also the content (and fix the v5 name as necessary).

In addition the previous test/condition was looking at the wrong names.
Prefer newer StreamerInfo.

When the class is loaded or known to the interpreter and the TStreamerInfo being read from
a file is equivalent (different checksum but same real content), we need to prefer the
one from in-memory as it would have better names (for the classes).

Conflicts:
	io/io/src/TStreamerInfo.cxx
Implement new CheckSum (without typedefs)

The new checksum use the normalize type where the typedef have been
removed except for the opaque one (Double32_t, Float16_t, string,
Long64_t, etc.)
Attempt to automatic fix bad STL collection names.

In ROOT v5, if the user created a data member of an STL type whose
content was a nested class or typedef but the user did not spelled
out the fully qualified name, CINT would record the 'wrong' name.

With:

namespace Exp {
  typedef Inner Alias;
  class Outer {
     vector<Alias> fValue;
  };
}

The recorded type was 'vector<Alias>' rather than vector<Exp::Inner>.

This fixes ROOT-6081.

Note that file contains this type of constructs, can not be read in
bare root without using TFile::MakeProject.  Without any compiled code
to help, it is harder (i.e. would be possible but is probably not worth
the investment) to distinguish between a vector of enums type and a
vector of misspelled type (We would have to 'assume' that any vector
of enum type might have been a class type).

Note that when the wrongly recorded type contains a typedef (like Alias),
the ROOT file does not contains enough information (it does not contains
any typedef information) in itself to read the file without access to the
user code (i.e. in bare root, the file is not readeable unless one
introduces 'by hand' the missing typedef).
v5's TDataMember::TrueTypeName does not conserve Double32_t, so we need to use TClassEdit
ResolveTypedef should never resolves Double32_t
Better way of combining the various older checksum calculation

Conflicts:
	core/meta/src/TClass.cxx
Correct test direction (in GetCheckSum)
Also keep/re-add Long64_t in CheckSums
Add support to merge top level non-TObject
In FindStreamerInfo special case current checksum.

This allows for the creation of the current streamerInfo if requested
Add TClass::FindStreamerInfoAbstractEmulated.

This is the equivalent of GetStreamerInfoAbstractEmulated.
This might no longer be needed for v6, but is required for v5 (so keep it until we merge
back the change to reduce divergence)

Conflicts:
	core/meta/src/TClass.cxx
Expand comment