Async functions

WIP

This introduces an AwaitExpression. Our old code only supported AwaitStatement which was really a hack.