Be less conservative about reprinting Statement nodes.

Previously, if the type of oldNode and newNode differed at all, we would
print newNode generically, without making any effort to patch it into the
previous position of oldNode.

This commit takes advantage of the observation that all Statement nodes
should be interchangeable as far as the surrounding code is concerned.

The benefit is that there should be fewer superificial whitespace changes
when statements are replaced, particularly at the top level.
Print node.comments instead of node.original.comments, if possible.
Use printNakedBlockStatement to print Program bodies.

This means, most importantly, that multi-line statements will be separated
from their neighbors by two newlines, whereas single-line statements will
be separated by only one newline.
Allow upwards traversal of the original AST.

We can store .parentNode properties on the AST nodes themselves
because the original AST is guaranteed to be freshly parsed, with no
duplicate nodes. This last edge case is important: given that every
node has at most one parent, there is no risk of clobbering an
existing .parentNode property.
Add a test of the getIndent function used by the reprinter.
Fix the getIndent function used by the reprinter.

In order to reprint a node that originally appeared at a different
level of indentation, the patcher needs to de-indent the original
lines by their original indentation amount, then re-indent them by the
desired amount.

The previous heuristic for determining the original indentation amount
was easily fooled, but I put up with it because in practice it was
wrong rarely enough.

Here's an example of when it would be wrong:

    function foo(bar,
                 baz) {
        qux();
    }

The previous version of getIndent reported the indentation of the
BlockStatement beginning at the "{" as being equal to the identation
of the "baz" token, when really it should be equal to the indentation
of the "function" keyword.

The new strategy is to find the starting column of the first ancestor
node on a line with nothing before it but whitespace.

Closes #6.