WebTransport is a stream-based protocol, so chunking boundaries are not
always preserved.
That's why we will now prepend a 4-bytes header to each chunk:
- first bit indicates whether the payload is plain text (0) or binary (1)
- next 31 bits indicate the length of the payload
See also: https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API/Writing_WebSocket_servers#format