Add (back) support for forwarded classes in TClingClassInfo (without changing findScope).

There are 3 types of forwarded classes (CXXRecord for a class without a definition) in clang:
1. user explicitly written:
   class FwdClass;
2. induced by lookup of class template instance
   vector<int> *p;
3. implicit inside class declaration
   class MyClass {
      class MyClass; // Implicitly insert by clang in the AST for its own use.
   };

TClingClassInfo can now represent the case 1. and the case 2 but rejects the
case 3 (which is 'artificial') [See also cling Display.cpp).  For the case 2,
if the ClassInfo is created via the 'name' based ClassInfo constructor (as
opposed to the constructor taking a type or decl), the class template
definition will be instantiated (so don't use ClassInfo(const char*) to check
whether a class template has already been instantiated or not).

The semantic of IsValid and IsLoaded is tweak as follow:
  IsValid: the ClassInfo points to a struct, class, enum or namespace known to
           clang 
  IsLoaded: the ClassInfo is valid and the entity has a definition in the AST.

In TCling::CheckClassInfo, we need to add code that return true if the class is
an STL collection that has been forward declared but false otherwise (in
particular case 3.).  This is necessary to avoid inadvertent creation of
ClassInfo leading to un-expected template instantiation (which are fatal for STL
containers as they are not yet accompanied by the proper creation of the
CollectionProxy leading to the use of an emulated collection on a JITed
collection).


git-svn-id: https://root.cern.ch/svn/root/trunk@48460 27541ba8-7e3a-0410-8455-c3a389f83636