Add a pretty printer for function bodies.

Change the translation strategy.  Instead of searching the compilation
unit's AST at translation time for async functions, find them ahead of
time and add them to a list.

Print the output file by printing substrings of the original file
corresponding to untranslated code, and use the pretty printer to
print translated code.
Use the new compilation strategy for the transformer.

The new compilation strategy is to only translate async bodies, and
copy the rest of the input file unchanged to the output.

Also, abstract common compilation code out of the transformer and
standalone command line program.
Add a few missing recursive calls to the pretty printing visitor.

At two sites, we had buffer.write(x) instead of visit(x).  This will
use the analyzer's own toString() on x instead of the pretty printer.
Merge pull request #43 from kmillikin/pretty-printer

Add a pretty printer for function bodies.