feat(ext/node): ESM import() support for module.registerHooks() (#33763)
Extends `module.registerHooks()` to intercept ESM `import()` calls,
not just CJS `require()`. This builds on #32432 (async module resolve)
and complements #33733 (CJS-only registerHooks).
- New `LoaderHookRegistry` + 5 ops connect the Rust
`CliModuleLoader` to JS hook chains via async oneshot channels
- `CliModuleLoader::resolve()` returns
`ModuleResolveResponse::Async` when hooks are active, delegating
to JS; fallthrough to `inner_resolve()` when hooks don't intercept
- `CliModuleLoader::load()` delegates to JS hooks before default
loading; hook-provided source is returned as `ModuleSource`
- `prepare_load` skipped when hooks active so virtual (non-disk)
modules work
- Hook chaining in LIFO order, `nextResolve`/`nextLoad` for
passthrough, `shortCircuit` validation
Towards #31045, #31665, #29350, #23201