Refactor QUIC version parsing

This CL fixes an oversight where QuicFramer::ParsePublicHeader was not parsing the version when parsing packets from versions <= 43. This was not an issue because there are only two clients of that method:
1) QuicFramer::ProcessIetfPacketHeader and that is not called for versions <= 43.
2) QuicDispatcher::ProcessPacket and that was parsing the version after the fact (this CL now removes that when the quic_use_parse_public_header flag is true which corresponds to when the dispatcher uses ParsePublicHeader.

This CL also adds a test to prevent this from regressing.

Since this CL only refactors code and does not change functionality, it is not flag protected.

gfe-relnote: refactor version parsing, not flag protected
PiperOrigin-RevId: 261792952
Change-Id: If5a1333590a41e8a03fd53c6f8cea70fa47e8fd4
diff --git a/quic/core/quic_framer.h b/quic/core/quic_framer.h
index 33b9b37..be5f128 100644
--- a/quic/core/quic_framer.h
+++ b/quic/core/quic_framer.h
@@ -870,6 +870,7 @@
       PacketHeaderFormat* format,
       bool* version_present,
       QuicVersionLabel* version_label,
+      ParsedQuicVersion* parsed_version,
       QuicConnectionId* destination_connection_id,
       std::string* detailed_error);