Work in progress on the completer translation.

Begin to get the completer translation on par with the other one.
All syntactic forms are supported.

Does not crash on the tests.
Fix three bugs in the translation.

1. When returning from the try or catch blocks of try/finally, a thunk
   is passed to the finally block and applied in tail position with
   respect to the block.  This thunk contained the evaluation of the
   return value, violating the required evaluation order.

2. The initially scheduled microtask was not wrapped in try/catch to
   propagation errors to the completer.

3. 'is' expressions were printed with 'as' by the pretty printer.
Handle catch and finally blocks properly.

The catch and finally blocks (whether entered synchronously or
asynchronously) are not called with an appropriate exception handler
in place to catch exceptions thrown by synchronous code in the body.
pFix this by wrapping the catch and finally function bodies in
try/catch.
Merge pull request #56 from kmillikin/back-to-the-completer

Back to the completer