Reland refactor(core): move nextTick/immediate queues into core, replace ops with shared buffers (#32440) (#32465)
## Summary
- The nextTick rewrite (#32440) moved unhandled rejection processing
into `processTicksAndRejections` (JS-side `processPromiseRejections`),
but `rejectionhandled` events were still only dispatched from Rust's
`dispatch_rejections`, which runs **after** tick draining. This caused
`rejectionhandled` to fire after `unhandledrejection` for later
promises, breaking expected event ordering.
- Extracted `dispatch_handled_rejections` from `dispatch_rejections` and
call it before both the tick drain in the main event loop and between
timer callbacks in `dispatch_timers`.
- Fixes `deno_core_testing::integration::error_rejection_catch`.
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>