Add a proper API to create memslices from the QUIC code.

Current API provides an (allocator, size) constructor.  However, this just creates a buffer with random data in it and no way to change it, since memslices are read-only.  Current code uses const_cast; this CL creates a proper API and updates all existing call sites to use it.

gfe-relnote: n/a (no functional change)
PiperOrigin-RevId: 287072774
Change-Id: Ie4dd2eae6db2ec91b087f5d41887ea3948ee411a
diff --git a/quic/quartc/quartc_multiplexer.cc b/quic/quartc/quartc_multiplexer.cc
index 3abc3cd..376fac0 100644
--- a/quic/quartc/quartc_multiplexer.cc
+++ b/quic/quartc/quartc_multiplexer.cc
@@ -7,6 +7,7 @@
 #include <cstdint>
 #include <utility>
 
+#include "net/third_party/quiche/src/quic/core/quic_buffer_allocator.h"
 #include "net/third_party/quiche/src/quic/core/quic_data_writer.h"
 #include "net/third_party/quiche/src/quic/platform/api/quic_mem_slice.h"
 #include "net/third_party/quiche/src/quic/platform/api/quic_mem_slice_span.h"
@@ -95,10 +96,10 @@
 }
 
 QuicMemSlice QuartcSendChannel::EncodeChannelId() {
-  QuicMemSlice id_slice(allocator_, encoded_length_);
-  QuicDataWriter writer(encoded_length_, const_cast<char*>(id_slice.data()));
+  QuicUniqueBufferPtr buffer = MakeUniqueBuffer(allocator_, encoded_length_);
+  QuicDataWriter writer(encoded_length_, buffer.get());
   writer.WriteVarInt62(id_);
-  return id_slice;
+  return QuicMemSlice(std::move(buffer), encoded_length_);
 }
 
 QuartcMultiplexer::QuartcMultiplexer(