fix(core): uv_compat cleanup and fixes (#32458)
- split uv_compat into multiple files
- move logic out of run_io into helpers
- avoid holding references across callbacks to prevent violating
aliasing
- add a test suite, this goes through the same JsRuntime event loop
infra as deno
- fix shutdown not waiting for write queue to drain
- use tokio shutdown instead of platform specific code
- fix slightly incorrect phase ordering
- fix some other issues found by claude review
disclosure: large parts done by claude