Add a client connection ID to version negotiation packet creation

This CL adds a new client_connection_id parameter to the functions that build version negotiation packets, and pass it through to AppendIetfConnectionIds instead of EmptyQuicConnectionId. All callers of this function call it with EmptyQuicConnectionId. To verify this we have a DCHECK that makes sure client_connection_id is empty when the disabled flag quic_do_not_override_connection_id is false. This CL also adds QuicVersion::SupportsClientConnectionIds which subsequent CLs will build on.

gfe-relnote: no functional change, add function parameter that is always empty, not flag-protected
PiperOrigin-RevId: 250551156
Change-Id: I378c67df16fc262145c5c88a76ca5440f72a29d8
diff --git a/quic/core/quic_framer.h b/quic/core/quic_framer.h
index d939175..11d48bb 100644
--- a/quic/core/quic_framer.h
+++ b/quic/core/quic_framer.h
@@ -435,13 +435,15 @@
 
   // Returns a new version negotiation packet.
   static std::unique_ptr<QuicEncryptedPacket> BuildVersionNegotiationPacket(
-      QuicConnectionId connection_id,
+      QuicConnectionId server_connection_id,
+      QuicConnectionId client_connection_id,
       bool ietf_quic,
       const ParsedQuicVersionVector& versions);
 
   // Returns a new IETF version negotiation packet.
   static std::unique_ptr<QuicEncryptedPacket> BuildIetfVersionNegotiationPacket(
-      QuicConnectionId source_connection_id,
+      QuicConnectionId server_connection_id,
+      QuicConnectionId client_connection_id,
       const ParsedQuicVersionVector& versions);
 
   // If header.version_flag is set, the version in the