Add better support for function type in TClassEdit::CleanType

In the CINT world, funcptr were void* (often with #ifdef hacks), but in
the Cling world, they seem to be handled properly.

That's great!

However, TClassEdit::CleanType munches the "function" part of the funcptr
types, so e.g. "double (*)()" becomes just "double". This is a problem as
the CleanType() part is called (eventually) by TClingMethodArgInfo to get
its type name. I.e., well before PyROOT can even see it.

The patch below works for me to leave the "()" bits well alone. I've also
checked ROOT/meta and did not see any breakage (although I doubt that it
test function pointers).

I need this to get my function callbacks to work (TF1 & friends), as their
callback ctor take a funcptr.

[From Wim]
Patch for default arguments when returning temporary

Note that besides taking into account the return address for the temporary,
this uses num_given_args rather than min_args (the use of which didn't make any
sense if you ask me) and changes the logic for the 'this' offset, if any,
slightly (as min_args had already a correction for it to begin with,
num_given_args did not, of course).

Plus another adjustment for the case of a trampoline with an extra return
address.

[From Wim]
Improve the input line validator handling of quoted strings.

For example those are now properly accepted (because the content
of the string is now ignored):

TFile *_file0 = TFile::Open("http://root.cern.ch/files/atlasFlushed.root");
n.SetName(" ( ");
Properly detect when the TClass is going to use the implementation known to cling's AST
enable temporary string passing using a buffer
handle cases with extraneous whitespace
allow by-value returns of strings
integer pass-by-ref
fix for change in TInterpreter interface
make callable pyobject-based function pointers work with TFN classes
fixes for by-value returns