Parameterize QuicDispatcherTest by version

This CL also improves version handling in quic::test::FullChloGenerator and adds a DCHECK and better logs in production code.

gfe-relnote: n/a, test-only
PiperOrigin-RevId: 295804827
Change-Id: Iecabca01df59444b8149cb696482398d47b407c1
diff --git a/quic/core/quic_dispatcher.cc b/quic/core/quic_dispatcher.cc
index f1fbb32..bcb7cd1 100644
--- a/quic/core/quic_dispatcher.cc
+++ b/quic/core/quic_dispatcher.cc
@@ -631,7 +631,8 @@
   if (!write_blocked_list_.empty()) {
     for (const std::unique_ptr<QuicSession>& session : closed_session_list_) {
       if (write_blocked_list_.erase(session->connection()) != 0) {
-        QUIC_BUG << "QuicConnection was in WriteBlockedList before destruction";
+        QUIC_BUG << "QuicConnection was in WriteBlockedList before destruction "
+                 << session->connection()->connection_id();
       }
     }
   }
@@ -942,6 +943,7 @@
   std::unique_ptr<QuicSession> session =
       CreateQuicSession(packet_info->destination_connection_id,
                         packet_info->peer_address, alpn, packet_info->version);
+  DCHECK(session);
   if (original_connection_id != packet_info->destination_connection_id) {
     session->connection()->AddIncomingConnectionId(original_connection_id);
     session->connection()->InstallInitialCrypters(original_connection_id);