Support building wasm backend using emscripten
Currently, our wasm backend only works if the target toolchain is wasi-sdk. Using emscripten as the target toolchain requires some extra patches, and it'll fail at link-time with certain unresolved symbol warnings, likely caused by some incoherent feature macros across the tree (e.g. asserting that certain functionality like POSIX signal doesn't exist on wasm32_HOST_ARCH, but also using HAVE_SIGNAL_H, when emscripten sysroot does provide it).
The main reason for adding emscripten support is for better sanitizer support. According to https://emscripten.org/docs/debugging/Sanitizers.html, emscripten supports UBSAN and ASAN, both may be useful when debugging the wasm backend.