[AST] DiagnosticEngine: retain strings used in tentative diagnostic arguments
If diagnostics are produced as part of a transaction, let's copy
strings associated with arguments into a separate long(er) term
storage which is going to be cleaned up when diagnostic is actually
emit to the consumers.