fix(ext/node): fix worker event loop cleanup for postMessageToThread
Fix the mainThreadPort keeping worker event loops alive after receiving
cross-thread messages. The root cause: transferred MessagePorts lose
their nodeWorkerThreadCloseCb property, which the MessagePort recv loop
needs to properly unref promises. Without it, new recv promises after
the first message stay refed, preventing the worker from exiting.
The fix sets nodeWorkerThreadCloseCb on transferred ports in both
setupMainThreadPort (worker side) and the MSG_REGISTER handler
(main thread side for sub-worker routing).
Also enables 3 Node.js compat tests:
- test-worker-messaging-errors-handler.js
- test-worker-messaging-errors-invalid.js
- test-worker-messaging-errors-timeout.js
Note: test-worker-messaging.js (full 7-thread tree) works correctly
for message routing but hangs due to a separate BroadcastChannel issue
where close() cancels messages posted just before it.