Roll forward cl/466743774

Took a quick audit through all the QuicServer construction I could find in codesearch and fixed all the related memory lifetime issues I could find.  Issues fixed in cl/466791564, cl/466976602, cl/467223371, cl/467221646, and cl/467212926.

No changes from original CL (other than those made the separate fix CLs).

*** Original change description ***

Create QUICHE toy CONNECT proxy server

***

PiperOrigin-RevId: 467313603
diff --git a/quiche/quic/tools/quic_server.h b/quiche/quic/tools/quic_server.h
index 11ff04e..0e48371 100644
--- a/quiche/quic/tools/quic_server.h
+++ b/quiche/quic/tools/quic_server.h
@@ -16,6 +16,7 @@
 #include "absl/strings/string_view.h"
 #include "quiche/quic/core/crypto/quic_crypto_server_config.h"
 #include "quiche/quic/core/io/quic_event_loop.h"
+#include "quiche/quic/core/io/socket_factory.h"
 #include "quiche/quic/core/quic_config.h"
 #include "quiche/quic/core/quic_packet_writer.h"
 #include "quiche/quic/core/quic_udp_socket.h"
@@ -115,6 +116,9 @@
 
   // Schedules alarms and notifies the server of the I/O events.
   std::unique_ptr<QuicEventLoop> event_loop_;
+  // Used by some backends to create additional sockets, e.g. for upstream
+  // destination connections for proxying.
+  std::unique_ptr<SocketFactory> socket_factory_;
   // Accepts data from the framer and demuxes clients to sessions.
   std::unique_ptr<QuicDispatcher> dispatcher_;