Collapse the tests into one.
Hide codegen from external users.
Use the short more meaningful function.
Add printing utility functions to the cling::Value.
Instead of passing the Expr*, which is being value printed, pass the Interpreter* and deduce the expr.
Remove the const so that the proper overload can be picked up.
Allow simplisticCastAs to work on ptr types.
Extend the lifetime of the temporaries up to the function call using them.

Results in move of ExprWithCleanups, which is responsible for the lifetime
of the temporaries.
Add the Interpreter* to the cling::Value.
We can afford it, because its actual size is 24 and it anyway gets aligned to
32 (except on a few old washing machines).
Implement cling::Value dump as a 'static' operation.

We need to look for a user overload of cling::printValue and printType and give
the control to it. If not specified, fallback into the default implementation.
Record the outcome of VPAuto (auto detection if a value should be printed out).
Rewire the dumping on cling::Value to its new implementation.

Dump cling::Value within setNoAlloc routines because this is its lifespan,
otherwise gets deleted if nobody requested it. I.e it was created only for
value printing purposes.

Dump cling::Value outside setWithAlloc because the actual value is not put inside
until the call to ::new finishes, thus we need to do it outside, i.e in EvaluateInternal.

Switch on the ValueExtraction synthesizer even when 'just' value printing. We
depend on it. Must be factored out properly in one class.

Stop attaching the value printing template magic, which didn't work in some cases.

Update the ref file, because now there is better type information.

Adapt the user-defined printout functions (TDatime).
Get rid of redundant class.
No need to synthesize anything anymore.
Remove dangling comment.
No need of 'public' StreamClingValue.
No need of complex indirections and 'fancy' function signatures. Simplify.
No need to pass in the ASTContext, we have it.
No need to pass the interpreter. We have it.
Change the wrapper signature to take a void* (useful for the C mode)