Provide an abstract API for a stream that one can write bytes into.

For QUIC, we have a QuicPacketWriter as an API for outputting all datagrams used by the QUIC connection; since encapsulated WebTransport (aka WebTransport over HTTP/2) has a single bytestream as an output, we need a similar type for that.

This CL takes the existing WebTransport stream write API, cleans it up, and moves it into its own class.

Notable changes to the write API:
- Make it vectorized
- Let it return a status object instead of simple true/false
- Merge writing and sending fin into a single method, the same way as existing QUIC APIs work

Parts of the old API are still kept around for compatibility with existing calls.

PiperOrigin-RevId: 501849717
diff --git a/build/source_list.bzl b/build/source_list.bzl
index 28ba715..0db8800 100644
--- a/build/source_list.bzl
+++ b/build/source_list.bzl
@@ -56,6 +56,7 @@
     "common/quiche_mem_slice_storage.h",
     "common/quiche_protocol_flags_list.h",
     "common/quiche_random.h",
+    "common/quiche_stream.h",
     "common/quiche_text_utils.h",
     "common/simple_buffer_allocator.h",
     "common/structured_headers.h",