Delay defining Group constructor until after UnknownField is a complete type.

C++20 requires that types used in std::vector are complete. Group's constructor definition requires that UnknownFields' destructor be available, which means UnknownField must be complete.

PiperOrigin-RevId: 527341365
diff --git a/upb/util/compare_test.cc b/upb/util/compare_test.cc
index e168f70..634f473 100644
--- a/upb/util/compare_test.cc
+++ b/upb/util/compare_test.cc
@@ -63,7 +63,7 @@
   uint32_t val;
 };
 struct Group {
-  Group(std::initializer_list<UnknownField> _val) : val(_val) {}
+  Group(std::initializer_list<UnknownField> _val);
   UnknownFields val;
 };
 
@@ -72,6 +72,8 @@
   std::variant<Varint, LongVarint, Delimited, Fixed64, Fixed32, Group> value;
 };
 
+Group::Group(std::initializer_list<UnknownField> _val) : val(_val) {}
+
 void EncodeVarint(uint64_t val, std::string* str) {
   do {
     char byte = val & 0x7fU;