Supporting async functions

This is only an early version. 
My hand-written tests as well as some PDCurses demos are working, but there are still some not working.

This PR is mainly for code review, because I think that the approach has been determined.

A library is necessary to support manipulating async stack frames. asm.js is not supported yet, but it won't be difficult, as there are only number operations (no references to functions)

kripken/emscripten#2482

Function pointers are not supported yet.


It seems like it may be important that this pass is run after the setjmp lowering pass, so that it sees the exposed control flow. Is that true? If so, please add a comment.