Fix ROOT-6747: enums treatment in TCling::CheckClassInfo

an issue was present with the TCling::CheckClassInfo method.
It returned true, i.e. name known to the interpreter, even if
the name was an enum.
This behaviour can now be steered with a boolean that restricts
the search to classes/structs and namespaces only.
The problem that allowed to identify this unintended behaviour
was the following: a TClass instance was deleting itself during
its own destruction, leading to a double delete.
This inconsistent state was due to the fact that a last-resort
operation is performed in TClass::GetClass, a lookup into the
interpreter database.
The check was the following:
   //last attempt. Look in CINT list of all (compiled+interpreted) classes
   if (gInterpreter->CheckClassInfo(normalizedName.c_str()) {
      // Get the normalized name based on the decl (currently the only way
      // to get the part to add or drop the default arguments as requested by the user)
      std::string alternative;
      gInterpreter->GetInterpreterTypeName(normalizedName.c_str(),alternative,kTRUE);
      const char *altname = alternative.c_str();
      if ( strncmp(altname,"std::",5)==0 ) {
         // For namespace (for example std::__1), GetInterpreterTypeName does
         // not strip std::, so we must do it explicitly here.
         altname += 5;
      }
      if (altname != normalizedName && strcmp(altname,name) != 0) {
         // altname now contains the full name of the class including a possible
         // namespace if there has been a using namespace statement.

         // At least in the case C<string [2]> (normalized) vs C<string[2]> (altname)
         // the TClassEdit normalization and the TMetaUtils normalization leads to
         // two different space layout.  To avoid an infinite recursion, we also
         // add the test on (altname != name)

         return GetClass(altname,load);
      }
      TClass *ncl = gInterpreter->GenerateTClass(normalizedName.c_str(), /* emulation = */ kFALSE, silent);
      if (!ncl->IsZombie()) {
         return ncl;
      }
      delete ncl;
   }
The if clause, if normalizedName refers to an enum should not pass in order not to
bootstrap a TClass from an enum name.
There is of course a test in TClass::GetClass which checks if the name corresponds to
a selected enum:
   // Try to see if this is an enumerator
   if(TEnum::GetEnum(name,load ? TEnum::kAutoload : TEnum::kNone)) return nullptr;
If unfortunately the user did not select the enum and no parsing happened, the name
is unknowm to the system and the static method returns nullptr.