h3: update 0-length DATA frame send behavior
h3: update 0-length DATA frame send behavior

`send_body()` attempts to constrain writes to within stream capacity
limits. Previously, it would prevent writing a 0-length DATA frame if
the stream capacity would not allow it to send the frame overhead and at
least 1 byte of payload.

Assuming it is desirable to send 0-length DATA with fin=true when the
stream has capacity for only the frame overhead, the current behavior
adds at least an RTT for flow control to add 1 byte that won't actually
be used.

Assuming it is undesirable to send 0-length DATA with fin=false,
send_body would allow that if there was stream capacity.

This change reworks send_body to be more consistent when handling
0-length DATA frames. It returns Error::Done in any condition where
0-length with fin=false occurs, and Ok(0) when 0-length with fin=true
occurs.

cloudflare/quiche,cloudflare/quiche,cloudflare/quiche