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.