The run_with_io suspension handler wasn't matching IO requests because
SX lists can be ListRef (mutable) not just List (immutable). Fixed by
extracting the underlying list first, then pattern matching on elements.
Also:
- Added io-sleep/io-wait/io-settle/io-fetch handlers to run_with_io
- Rebound try-call inside run_spec_tests to use eval_with_io
- io-fetch returns "yay" for text, {foo:1} for json, response dict
This enables perform-based IO (wait, fetch) to work in test execution,
fixing ~30 tests that previously returned empty strings.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>