Add missing lock in TClass::IgnoreTObjectStreamer

Conflicts:
	core/meta/src/TClass.cxx
Remove obsolete code
For debugging make 'error' fatal
Avoid unnecessary recursion of BuildOld (and co) for emulated class
Add comment on suspicious (thread-safety wise) part of the code

Conflicts:
	io/io/src/TBufferFile.cxx
make error fatal for debugging
Extend reach of error message
Remove (now) redundant (useless) work.

IsCompiled() means that Build() or BuildOld() has been called.
Add atomic IsCompiled

Conflicts:
	core/meta/src/TVirtualStreamerInfo.cxx
	io/io/src/TStreamerInfo.cxx
Add missing lock in TStreamerInfo::Clear
Add progress comment
TVirtualStreamerInfo's IsBuilt and IsCompiled were almost the same, merge them.

We now consistently use IsCompiled as the sole spelling (IsBuilt is kept for backward compatibility)
Separate semantic of fIsBuilt and recursion prevention
typos
Clarify the different between IsBuilt and IsCompiled.

Separate again the value of IsBuilt() and IsCompiled()
Extend comment
Reduce memory use by using bit field.
Fix usage of BuildEmulated.

BuildEmulated is used for reading ancient ROOT files (version 2) and requires the creation
then modification of a StreamerInfo, so we need to explicit undo a StreamerInfo compilation
(so this support was broken since we no longer support re-compilation unless explicitly
 provoked by a call to Clear).

Conflicts:
	io/io/src/TStreamerInfo.cxx
Remove obsolete comment
Guarantee that fLastReadInfo point to a Compiled StreamerInfo.

Also move code around to avoid spurrious test

Conflicts:
	core/meta/src/TClass.cxx
	io/io/src/TBufferFile.cxx