Merge pull request #35 from kmillikin/master

Fix an error due to a shadowed identifier
Change the async body boilerplate.

Previously: the boilerplate created a completer, scheduled a microtask
to run the translated body, and returned the future of the completer.
The microtask used the completer to complete the future with a value or
error as appropriate.

Now: the boilerplate creates and returns a Future directly via new
Future.microtask.  The future completes with a value by returning a
value, and completes with an error by throwing an exception.