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 one works:
```
#include <stdio.h>
#include <emscripten.h>


void f(void * arg) {
    int * p = (int*)arg;
    for(int i = 0; i < 3; ++i) {
        *p = i;
        emscripten_yield();
    }
}

void g(void * arg) {
    int * p = (int*)arg;
    for(int i = 0; i < 3; ++i) {
        *p = i + 100;
        emscripten_yield();
    }
}

int main(int argc, char **argv)
{
    int i = 0;
    emscripten_coroutine co = emscripten_coroutine_create(f, (void*)&i);
    emscripten_coroutine co2 = emscripten_coroutine_create(g, (void*)&i);
    while(emscripten_coroutine_next(co)) {
        printf("%d-", i);
        emscripten_coroutine_next(co2);
        printf("%d-", i);
    }
    return 0;
}
```
which prints
```
0-100-1-101-2-102-
```