Mark implicit members coming from a PCH as used.

Implicitly generated members from a CXXRecordDecls coming from a PCH should not be
unloaded. CodeGen 'records' that it once emitted the implicit members and if they
get unloaded it would be out of sync. The key difference is the information about
all the implicitly generated members (trivial ctors/dtors, etc) comes from an
ASTMutationListener and they are not part of the transaction. We still do not
record it as a part of the transaction, we just mark them as used so that they
don't get unloaded from the llvm::Module.

Once the list of llvm.used decls is emitted we need to clear it, otherwise we
end up emitting one and the same thing over and over.

Fixes ROOT-6722
Tests should be coming shortly.

(cherry picked from commit 2abc4e82da4b52c3b9b703774c8f4d03d8647649)
Do not deserialize decls, while iterating to unload.

(cherry picked from commit 851be3dca8511ac1117796313ebfe339e1f610aa)
Add the ASTContext which will provide clang::Attr's operator new.

(cherry picked from commit 44498c6c959764b116f3c32cb225b6dc0894ffbe)