Add LayoutPreservingTransformer.
Add some useful location methods to AST nodes.

Also fix old code to use them.
Use LayoutPreservingTransformer in RenameVariable

Also starting to lay down some infrastructure; introduced the
Transformer interface for AST transformations, and a Refactoring
base class that RenameVariable now implements.
Fix parser; in/out params now have location info.

Also remove some unused code in parser. Fixes #5