To be consistent we need to mangle the destructor as the complete one.

This is what we already do with constructor and when we lookup and search
for destructor we want the actually destructor implementation not the
one which also does the delete.
Add support for codegening template function no yet instantiated
Add assert
Move instantiation within transaction
Make sure we have PushTransactionRAII around code that might deserialize decls
Do not codegen function template that should not be.

During the overload set resolution will sometimes generate
FunctionDecl from template decls just to known whether to
use them or not.   TClingCallFunc::CodeGen should not
request the instantiation of those.
Merge proper codegen of function template instances.