DATA_BLOCKED frames should be sent in the same as the STREAM frames that
resulted in the connection becoming blocked on connection flow control.
If there's not enough space left in that packet, the DATA_BLOCKED frame
is sent in the next packet.
* refactor the framer to pack both control and STREAM frames
* refactor framer STREAM frame packing logic
* pack STREAM_DATA_BLOCKED in the same packet as the STREAM frame
This makes debugging easier (and is slightly more efficient). In the
pathological case where there is not enough space remaning in the packet
to pack the STREAM_DATA_BLOCKED frame, it is queued for the next packet.
* add an integration test
* use require in benchmark tests
* translate the QLOGDIR test
* translate handshake tests
* translate the handshake RTT tests
* translate the early data test
* translate the MTU tests
* translate the key update test
* translate the stateless reset tests
* translate the packetization test
* translate the close test
* translate the resumption test
* translate the tracer test
* translate the connection ID length test
* translate the RTT tests
* translate the multiplexing tests
* translate the drop tests
* translate the handshake drop tests
* translate the 0-RTT tests
* translate the hotswap test
* translate the stream test
* translate the unidirectional stream test
* translate the timeout tests
* translate the MITM test
* rewrite the datagram tests
* translate the cancellation tests
* translate the deadline tests
* translate the test helpers
We should provide safe defaults. Since we implement the 3x amplification
limit, disabling address validation is not unsafe, and will save 1 RTT
for every handshake for applications that don't explicitely configure
Retries.