The example/suite runners discarded e.stack via console.error(e.message ?? e),
hiding the wasm-function offsets that emsymbolizer needs to map an abort back
to C source. A failing test only printed a terse message like "memory access
out of bounds" with no trace.
- Add reportError() to helpers.js/helpers-tcl.js; print the full stack
(falling back to the message).
- Wrap command execution in runScript() to name the command that aborted
before the error propagates.
- Use reportError() in all standalone runners and in all.js/all-tcl.js
(full stack to stderr, one-line PASS/FAIL summary kept; tests still run
independently).
- build.sh: run the --test step in a subshell so its cd does not leak into
the --pack step.