Add a class to represent a sequence of BalsaHeaders.

This CL introduces BalsaHeadersSequence, which wraps a std::list<BalsaHeaders>
and an iterator. Users add BalsaHeaders to the BalsaHeadersSequence (owning),
and can then get a pointer (non-owning) to successive BalsaHeaders.

The immediate usage of BalsaHeadersSequence will be in SimpleClient
(RequestsTestHelper ecosystem, cl/527686928), but the long-term envisioned use
case will be in JetstreamSession, e.g., adding to BalsaHeadersSequence in the
readers and consuming the BalsaHeaders while driving the response pipeline [1].

[1] Roughly
http://google3/gfe/gfe2/jetstream/jetstream_session.cc;l=6760;rcl=528925001 and
http://google3/gfe/gfe2/jetstream/net_http_requester.cc;l=2560;rcl=528925001.

PiperOrigin-RevId: 529155933
diff --git a/build/source_list.bzl b/build/source_list.bzl
index 50d3f48..fd20c48 100644
--- a/build/source_list.bzl
+++ b/build/source_list.bzl
@@ -12,6 +12,7 @@
     "balsa/balsa_enums.h",
     "balsa/balsa_frame.h",
     "balsa/balsa_headers.h",
+    "balsa/balsa_headers_sequence.h",
     "balsa/balsa_visitor_interface.h",
     "balsa/framer_interface.h",
     "balsa/header_api.h",
@@ -407,6 +408,7 @@
     "balsa/balsa_enums.cc",
     "balsa/balsa_frame.cc",
     "balsa/balsa_headers.cc",
+    "balsa/balsa_headers_sequence.cc",
     "balsa/header_properties.cc",
     "balsa/simple_buffer.cc",
     "balsa/standard_header_map.cc",
@@ -1024,6 +1026,7 @@
 ]
 quiche_tests_srcs = [
     "balsa/balsa_frame_test.cc",
+    "balsa/balsa_headers_sequence_test.cc",
     "balsa/balsa_headers_test.cc",
     "balsa/header_properties_test.cc",
     "balsa/simple_buffer_test.cc",
diff --git a/build/source_list.gni b/build/source_list.gni
index c1baf44..4d34746 100644
--- a/build/source_list.gni
+++ b/build/source_list.gni
@@ -12,6 +12,7 @@
     "src/quiche/balsa/balsa_enums.h",
     "src/quiche/balsa/balsa_frame.h",
     "src/quiche/balsa/balsa_headers.h",
+    "src/quiche/balsa/balsa_headers_sequence.h",
     "src/quiche/balsa/balsa_visitor_interface.h",
     "src/quiche/balsa/framer_interface.h",
     "src/quiche/balsa/header_api.h",
@@ -407,6 +408,7 @@
     "src/quiche/balsa/balsa_enums.cc",
     "src/quiche/balsa/balsa_frame.cc",
     "src/quiche/balsa/balsa_headers.cc",
+    "src/quiche/balsa/balsa_headers_sequence.cc",
     "src/quiche/balsa/header_properties.cc",
     "src/quiche/balsa/simple_buffer.cc",
     "src/quiche/balsa/standard_header_map.cc",
@@ -1024,6 +1026,7 @@
 ]
 quiche_tests_srcs = [
     "src/quiche/balsa/balsa_frame_test.cc",
+    "src/quiche/balsa/balsa_headers_sequence_test.cc",
     "src/quiche/balsa/balsa_headers_test.cc",
     "src/quiche/balsa/header_properties_test.cc",
     "src/quiche/balsa/simple_buffer_test.cc",
diff --git a/build/source_list.json b/build/source_list.json
index e51e004..d9867f7 100644
--- a/build/source_list.json
+++ b/build/source_list.json
@@ -11,6 +11,7 @@
     "quiche/balsa/balsa_enums.h",
     "quiche/balsa/balsa_frame.h",
     "quiche/balsa/balsa_headers.h",
+    "quiche/balsa/balsa_headers_sequence.h",
     "quiche/balsa/balsa_visitor_interface.h",
     "quiche/balsa/framer_interface.h",
     "quiche/balsa/header_api.h",
@@ -406,6 +407,7 @@
     "quiche/balsa/balsa_enums.cc",
     "quiche/balsa/balsa_frame.cc",
     "quiche/balsa/balsa_headers.cc",
+    "quiche/balsa/balsa_headers_sequence.cc",
     "quiche/balsa/header_properties.cc",
     "quiche/balsa/simple_buffer.cc",
     "quiche/balsa/standard_header_map.cc",
@@ -1023,6 +1025,7 @@
   ],
   "quiche_tests_srcs": [
     "quiche/balsa/balsa_frame_test.cc",
+    "quiche/balsa/balsa_headers_sequence_test.cc",
     "quiche/balsa/balsa_headers_test.cc",
     "quiche/balsa/header_properties_test.cc",
     "quiche/balsa/simple_buffer_test.cc",