Implement implicit auto keyword injection in clang itself.
We should append the outfile name to the path.
We cannot forward declare a function inside a function.
Now expected errors are printed out and filecheck cannot skip them.
This is actually an improvement in newest llvm. In that case we don't need
to run the test twice.
Fix test semantics.
Don't forget to add FileCheck.
Add the -I so that Redeclarables.h can be found.
Revert the right cached files even when there are macros involved.

Fix the semantic of the test.
Check against the new message printed out if there were differences.
Update clang::Decl::isUsed.

CheckVariableDeclaration calls mergeVarDecl, which updates isUsed.
And if the previous wasn't used the VD's used flag gets updated to not used too.
We don't need -verify.
Call InitializeSema on the external sema source.
Avoid double deletion of the ASTContext's external source.

This is another hack, working around the lack of multiplexing external AST source.
Fix broken by construction test.
Implement shutdown action for the ExecutionContext.

When we tear down, the ExecutionContext must destroy all 'managed' addresses.
For example the LifetimeHandlers that came from the DynamicLookup. This needs
the interpreter to be in a 'sane' state, because they might call back the
Interpreter. For example gCling->execute("delete ...");
Send shutdown signal only when the ExecutionContext exists.

ExecutionContext doesn't exist in '-fsyntax-only' mode.
We need to codegen the implicit auto variable.

This is the only way how codegen can set its initializer and mark it as non-external.
Add timestamp to the created file. For now just HH:MM:SS.
The compare/store state can trigger deserialization.
Compare the reverse so that the newer changes appear with + in the diff.