A C-to-C transformation to rename identifiers.
This transformation will rename all identifiers according to a provided alist. Note, it does nothing to ensure substitutions preserve semantic equivalence. For instance, a substitution might introduce variable names which conflict with existing variables.
Eventually we may wish for a renaming transformation with options to limit substitution by type of identifier, scope, restrict to free variables, etc.