Update the BalsaHeadersSequence internal data structure from std::list to absl::InlinedVector.

The std::vector/absl::InlinedVector may be somewhat more performant by default
overall, especially once we switch from BalsaHeaders to
std::unique_ptr<BalsaHeaders>, which is planned for the next CL (cl/538578037).
Some interesting discussion on this comparison is at
https://stackoverflow.com/q/2209224. The std::vector/absl::InlinedVector is
also somewhat easier to work with, though there is a fond farewell to
`&*iter_++`.

Inspired by http://google3/gfe/gfe2/http2/http2_writer.h;l=164;rcl=524908183 :D

PiperOrigin-RevId: 540664124
diff --git a/quiche/balsa/balsa_headers_sequence.cc b/quiche/balsa/balsa_headers_sequence.cc
index 0ce2879..8e9fcff 100644
--- a/quiche/balsa/balsa_headers_sequence.cc
+++ b/quiche/balsa/balsa_headers_sequence.cc
@@ -1,38 +1,32 @@
 #include "quiche/balsa/balsa_headers_sequence.h"
 
-#include <iterator>
-
 #include "quiche/balsa/balsa_headers.h"
 
 namespace quiche {
 
 void BalsaHeadersSequence::Append(BalsaHeaders headers) {
   sequence_.push_back(std::move(headers));
-
-  if (iter_ == sequence_.end()) {
-    iter_ = std::prev(sequence_.end());
-  }
 }
 
-bool BalsaHeadersSequence::HasNext() const { return iter_ != sequence_.end(); }
+bool BalsaHeadersSequence::HasNext() const { return next_ < sequence_.size(); }
 
-BalsaHeaders* BalsaHeadersSequence::PeekNext() const {
+BalsaHeaders* BalsaHeadersSequence::PeekNext() {
   if (!HasNext()) {
     return nullptr;
   }
-  return &*iter_;
+  return &sequence_[next_];
 }
 
 BalsaHeaders* BalsaHeadersSequence::Next() {
   if (!HasNext()) {
     return nullptr;
   }
-  return &*iter_++;
+  return &sequence_[next_++];
 }
 
 void BalsaHeadersSequence::Clear() {
   sequence_.clear();
-  iter_ = sequence_.end();
+  next_ = 0;
 }
 
 }  // namespace quiche
diff --git a/quiche/balsa/balsa_headers_sequence.h b/quiche/balsa/balsa_headers_sequence.h
index 91d1287..ca521f6 100644
--- a/quiche/balsa/balsa_headers_sequence.h
+++ b/quiche/balsa/balsa_headers_sequence.h
@@ -1,8 +1,9 @@
 #ifndef QUICHE_BALSA_BALSA_HEADERS_SEQUENCE_H_
 #define QUICHE_BALSA_BALSA_HEADERS_SEQUENCE_H_
 
-#include <list>
+#include <cstddef>
 
+#include "absl/container/inlined_vector.h"
 #include "quiche/balsa/balsa_headers.h"
 #include "quiche/common/platform/api/quiche_export.h"
 
@@ -25,14 +26,18 @@
 
   // Similar to `Next()` but does not advance the sequence.
   // TODO(b/68801833): Consider removing after full refactoring is in place.
-  BalsaHeaders* PeekNext() const;
+  BalsaHeaders* PeekNext();
 
   // Clears the sequence. Any previously returned BalsaHeaders become invalid.
   void Clear();
 
  private:
-  std::list<BalsaHeaders> sequence_;
-  std::list<BalsaHeaders>::iterator iter_ = sequence_.end();
+  // Typically at most two interim responses: an optional 100 Continue and an
+  // optional 103 Early Hints.
+  absl::InlinedVector<BalsaHeaders, 2> sequence_;
+
+  // The index of the next entry in the sequence.
+  size_t next_ = 0;
 };
 
 }  // namespace quiche