Add higher-level TCP client socket/factory support to QUICHE

Added some basic interfaces that could be used to abstract away implementation details of socket operations, including a SocketFactory that allows initiation details like QuicEventLoop to be hidden away from code interacting with it and creating/running sockets.  Especially helpful to pass factory objects to code that doesn't need to know details around the event/async libraries in use or need to stay agnostic between them to build on multiple plaforms/environments.

Interfaces support my current needs (TCP client sockets), but left them deliberately open to future expansion to server sockets or UDP, etc.  Created a QuicEventLoop-based implementation of the interfaces.

PiperOrigin-RevId: 466366913
diff --git a/build/source_list.bzl b/build/source_list.bzl
index 30d068a..a928fe6 100644
--- a/build/source_list.bzl
+++ b/build/source_list.bzl
@@ -947,10 +947,14 @@
     "quic/core/batch_writer/quic_batch_writer_test.h",
     "quic/core/batch_writer/quic_gso_batch_writer.h",
     "quic/core/batch_writer/quic_sendmmsg_batch_writer.h",
+    "quic/core/io/event_loop_socket_factory.h",
+    "quic/core/io/event_loop_tcp_client_socket.h",
     "quic/core/io/quic_default_event_loop.h",
     "quic/core/io/quic_event_loop.h",
     "quic/core/io/quic_poll_event_loop.h",
     "quic/core/io/socket.h",
+    "quic/core/io/socket_factory.h",
+    "quic/core/io/stream_client_socket.h",
     "quic/core/quic_default_packet_writer.h",
     "quic/core/quic_epoll_alarm_factory.h",
     "quic/core/quic_epoll_clock.h",
@@ -981,6 +985,8 @@
     "quic/core/batch_writer/quic_batch_writer_buffer.cc",
     "quic/core/batch_writer/quic_gso_batch_writer.cc",
     "quic/core/batch_writer/quic_sendmmsg_batch_writer.cc",
+    "quic/core/io/event_loop_socket_factory.cc",
+    "quic/core/io/event_loop_tcp_client_socket.cc",
     "quic/core/io/quic_default_event_loop.cc",
     "quic/core/io/quic_poll_event_loop.cc",
     "quic/core/io/socket_posix.cc",
@@ -1302,6 +1308,7 @@
     "quic/core/http/quic_spdy_client_session_test.cc",
     "quic/core/http/quic_spdy_client_stream_test.cc",
     "quic/core/http/quic_spdy_server_stream_base_test.cc",
+    "quic/core/io/event_loop_tcp_client_socket_test.cc",
     "quic/core/io/quic_all_event_loops_test.cc",
     "quic/core/io/quic_poll_event_loop_test.cc",
     "quic/core/io/socket_test.cc",