Await always waits

The expression ‘await e’ always suspends the enclosing function. If e does not
evaluate to a an object o of type Future, a new Future is created using Future.value(o).

A small change in the backend allows a return instruction to be followed by
other instructions. In async functions, a return can suspend the function and the
continuation point is in the same code block after the return.

Other small changes:
- More user-friendly error message if async/await is not enabled.
- Programs no longer need to import dart:async when using async/await.

R=fschneider@google.com

Review URL: https://codereview.chromium.org//634603002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge@41105 260f80e4-7a28-3924-810f-c04153c831b5
Fixing release build

Make compiler happy.

TBR=srdjan

Review URL: https://codereview.chromium.org//653983003

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge@41106 260f80e4-7a28-3924-810f-c04153c831b5
Bump the async_await compiler version.

R=rnystrom@google.com

Review URL: https://codereview.chromium.org//611173002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge@41107 260f80e4-7a28-3924-810f-c04153c831b5