Reverse the order of arguments to findReprints functions.

New node first, old node second. The simplicity of this change demonstrates the symmetry of the traversal code.
Rename arguments to findReprints functions for greater semantic clarity.
Introduce a placeholder "path" parameter to the findReprints functions.
Move some general-purpose utilities into lib/util.js.
Test generic printing of expressions that require parentheses.
Implement a simple Path type for tracking child-to-parent relationships.
Use the new Path type to keep track of child-to-parent relationships.

We can't just store a .parent property on AST nodes because a node can appear in multiple places in the AST, with different parents.
TODO Temporarily disable test/parens.js in test/run.js.

The parenthesization tests can still be run directly: whiskey test/parens.js