fix: address review feedback for MessagePort compat
- Fix emit() ambiguity: always wrap args as array in detail, always
spread in listener — prevents single-array-arg from being mistaken
for multi-arg
- Use process.nextTick instead of queueMicrotask for close callback
to match Node.js ordering semantics
- Use ERR_INVALID_ARG_TYPE from internal/errors.ts instead of manually
constructing TypeError with .code property