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.
I don't like having this constant in two places, perhaps it should be a parameter of the coroutine? Maybe create could take another param, that is the stack size, and if `<0` then it defaults to 4096? And save the stack size as part of the coroutine header?