static rename(tree, varName, newName) {
    return new AlphaRenamer(varName, newName).transformAny(tree);
  }
Alpha-renames {@code varName} to {@code newName} in {@code tree}
and returns the new {@code ParseTree}.

<p>Renaming is applied throughout the lexical scope of the
variable. If the var name is freshly bound alpha-renaming doesn't
propagate there; for example, renaming {@code "a"} to {@code "b"}
in the following program:

<pre>
function a(a) {
  ...
}
</pre>
Will produce:
<pre>
function b(a) {
  ...
}
</pre>

@param {ParseTree} tree the tree to substitute names in.
@param {string} varName the identifier to be replaced.
@param {string} newName the identifier that will appear instead of |varName|.
@return {ParseTree} a copy of {@code tree} with replacements.