lib: replace MessageEvent with undici's
undici's MessageEvent is better tested and has a complete WebIDL
implementation for validation. Not only this, but it's also used in
Node's current WebSocket implementation. There are a large number of
webidl-related issues in the current MessageEvent, such as not
implementing MessageEvent.prototype.initMessageEvent
, not validating
arguments passed to its constructor
(https://github.com/nodejs/node/pull/51771), not validating the values
passed to the constructor (such as not validating that ports
is a
sequence, not converting origin to a USVString, etc.), and other issues.