Enable autoloading of classes in namespaces

This new feature allows ROOT to load automatically libraries
in presence of classes in namespaces, for example ns1::ns2::A();
The changes necessary to achieve this goal span different files.
1) rootcling: all namespaces are forward declared. This is more
than declaring only templates (previous behaviour).
2) TCling: for every forward declaration, a recursive search is
triggered starting from the outermost namespace (if present). All
namespaces are then marked as having an external visible storage in
order to redirect symbol lookups to cling. At the same time, the
namespaces coming from the forward declarations in the rootmaps are
kept in a set.
3) TClingCallbacks: When a namespace is found in the steps that may
eventually end up triggering an autoload, the aforementioned set of
namespaces coming from rootmaps is searched.
The chain proceeds only if the namespace is found. This is done
to avoid lookups in the pch, which is another external visible
storage.

If future performance measurements point to bottlenecks in the
implementations, these may be suggestions for optimisation:
1) "Refactor" forward declarations in the rootmaps in order to trigger the
recursive visit of the AST less. For example, transforming
namespace ns1 { }
namespace ns1 { namespace ns2 { template <class T> class A; } }
namespace ns1 { namespace ns2 { template <class T> class B; } }
into
namespace ns1 { namespace ns2 { template <class T> class A; template <class T> class B; } }
(note: still on one line not to break the parsing of rootmaps)
2) During the debugging it became (again) clear that the autoloading
mechanism is ubiquitous and should be as lightweight as possible.
Strategies to avoid unnecessary lookups may be put in place, for
example not performing subsequent identical lookups.