support coroutine

A few questions

- How about a variance of `emscripten_coroutine_create` that allows customized stack size?
- Do we need `emscriptens_coroutine_destroy`, for those coroutine we don't need anymore, but still running?
- Do we need to save and restore STACK_MAX?
- The code is not actually asm.js validated, not sure how to make _malloc and _free work.
This is the effective stack size, correct? You should also adjust `STACK_MAX` so in ASSERTIONS builds we will check for stack overflows. I actually see the code currently ignores `STACK_MAX`, even though it is in the asm module, fixing that now.