stream: properly propagate fin from zero-length writes
stream: properly propagate fin from zero-length writes

Before, we would propagate the fin flag from zero-length writes by
creating an empty RangeBuf and queueing it into the SendBuf.

However due to the `out_len > 0` loop check, SendBuf::pop() would fail
to process the empty buffer if the `max_data` parameter matched the
amount of data stored in SendBuf.

As an example, assume that SendBuf has two buffers:

 1. "hello", off=0, len=5, fin=false
 2. "",      off=5, len=0, fin=true

(the second buffer being zero-length).

If SendBuf::pop() is called with `max_data = 5`, the second buffer would
not be removed from the queue, and the fin flag wouldn't be returned.

Instead make SendBuf::pop() match the output buffer's maximum offset
against the known final offset, this way we don't need to actually queue
the fin=true empty range buffer in the first place.

cloudflare/quiche,cloudflare/quiche,cloudflare/quiche