fixes for ipython


git-svn-id: https://root.cern.ch/svn/root/trunk@48769 27541ba8-7e3a-0410-8455-c3a389f83636
Add routines to get the desugared type for the return type of a method
and for its arguments.  Namely:
  TFunction::GetReturnTypeNormalizedName
  TMethodArg::GetTypeNormalizedName

Those routines are similar to routines that are named using the words
'TrueName' but have a clarified definition and have a different signature.

A normalized name is defined as:

The name of the type as accessible from the global scope to which 
a 'using namespace std;' has been applied to and with:
  - all typedefs desugared except for Double32_t, Float16_t, [U]Long64_t, 
    std::string and any typedef that is declared within the std namespace
    and points to an entity also declared with std (hence hiding the std library
    implementation 'details').
  - default template parameters removed for STL collections and added for any
    other class templates instances.
  - Fully qualified both itself and all of its component, except that, at least
    for moment, all 'std::' are stripped.

These routines have the signature:

   std::string GetReturnTypeNormalizedName() const;

They do not return 'const char*' to avoid having to have a static buffer
holding the information or recording the information as part of the object.

They do not return TString to avoid the tempting (and compilable) 'const char
*str = method->Get...();' which would lead to inadvertent use of 'destroyed'
memory.

They do return std::string as in C++11, thanks to the move constructor, will no
longer be expansive to return.

If those routines becomes/are very time critical in C++03, we will then either
add a similar routines returning const char* (for example GetTrueTypeName) or a
similar routines taking the output string as an argument by reference.


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