Add the concept TInterpreter::DeclId_t.

This value is used to identify uniquely the entity between
ROOT and the interpreter.  In the case of classes, this
is (currently?) 'almost' unique as the template instance
using opaque typedef are not distinguished for the underlying
one.  In CINT this would have been a tagnum or an address.
In Cling, this is the canonical decl.
Reduce (a little bit) reliance on static variable
Add support for Unloading/Reloading TFunction and TMethod.

This will allow to set a TFunction or a TMethod object as being unloaded
without having to delete the object.  This is similar to the way we already
treat TClass and will avoid the client code to either have to 'always' lookup
the function and to have their own insulation layer.
Add GetDeclId to ClassInfo and MethodInfo
Add 'TInterpreter::ClassInfo_Contains(ClassInfo_t *info, DeclId_t declid)'
Add TInterpreter::GetFunctionWithPrototype returning a DeclId_t
Add MethodInfo_Factory(DeclId_t declid)
merge with trunk
Move DeclId_t from TInterpreter to TDictionary

Also add TFunction::GetDeclId
Add TInterpreter::GetFunctionWithValues returning a DeclId_t
Introduce TListOfFunctions (fast 'reload', holds content 'forever', search by DeclId).
Make CreateListOfMethods and UpdateListOfMethods nop
Start unsing TListOfFunctions in TClass
Improve constness
Add TViewPubFunctions (view of all public functions).

This class is used in the implementation of TClass::GetListOfAllPublicMethods
and rather than copying the partial content of the ListOfMethods it presents
a view over theses list of the class and each of its bases classes.  By
definition any updated to the list of methods is immediately reflected in the
view.

The iteration go first through the public method of the class
then through the public method of its base classe (and the base
class's base classes) starting from the left most base class.

The view support iteration via TIter and direct access [ At(idx),
FindObject(TObject*) and FindObject(const char*) ].
The view does *not* supprot iteration through TObjLink and does *not* support
addition or removal of any content.
Add TFunction::IsValid
typo
Add missing assigment in GetMethodWithPrototype
Extend doc
Make TListOfFunctions public as we need it both in core/base and core/meta