cmd/protoc-gen-go: generate for v2-only dependencies

This removes yet another set of dependencies of v2 on v1.
The only remaining dependency are in the _test.go files,
primarily for proto.Equal.

Changes made:
* cmd/protoc-gen-go no longer generates any functionality that depends
on the v1 package, and instead only depends on v2.
* internal/fileinit.FileBuilder.MessageOutputTypes is switched from
protoreflect.MessageType to protoimpl.MessageType since the
implementation must be fully inialized before registration occurs.
* The test for internal/legacy/file_test.go is switched to a legacy_test
package to avoid a cyclic dependency.
This requires Load{Enum,Message,File}Desc to be exported.

Change-Id: I43e2fe64cff4eea204258ce11e791aca5eb6e569
Reviewed-on: https://go-review.googlesource.com/c/protobuf/+/169298
Reviewed-by: Damien Neil <dneil@google.com>
diff --git a/internal/testprotos/test/test_weak.pb.go b/internal/testprotos/test/test_weak.pb.go
index ce220c2..7562089 100644
--- a/internal/testprotos/test/test_weak.pb.go
+++ b/internal/testprotos/test/test_weak.pb.go
@@ -4,10 +4,9 @@
 package test
 
 import (
-	proto "github.com/golang/protobuf/proto"
 	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
+	protoregistry "github.com/golang/protobuf/v2/reflect/protoregistry"
 	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
-	reflect "reflect"
 )
 
 type WeakImportMessage struct {
@@ -20,7 +19,7 @@
 	return xxx_File_test_test_weak_proto_messageTypes[0].MessageOf(m)
 }
 func (m *WeakImportMessage) Reset()         { *m = WeakImportMessage{} }
-func (m *WeakImportMessage) String() string { return proto.CompactTextString(m) }
+func (m *WeakImportMessage) String() string { return protoimpl.X.MessageStringOf(m) }
 func (*WeakImportMessage) ProtoMessage()    {}
 
 // Deprecated: Use WeakImportMessage.ProtoReflect.Type instead.
@@ -28,24 +27,6 @@
 	return xxx_File_test_test_weak_proto_rawdesc_gzipped, []int{0}
 }
 
-func (m *WeakImportMessage) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_WeakImportMessage.Unmarshal(m, b)
-}
-func (m *WeakImportMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_WeakImportMessage.Marshal(b, m, deterministic)
-}
-func (m *WeakImportMessage) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_WeakImportMessage.Merge(m, src)
-}
-func (m *WeakImportMessage) XXX_Size() int {
-	return xxx_messageInfo_WeakImportMessage.Size(m)
-}
-func (m *WeakImportMessage) XXX_DiscardUnknown() {
-	xxx_messageInfo_WeakImportMessage.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_WeakImportMessage proto.InternalMessageInfo
-
 var xxx_File_test_test_weak_proto_rawdesc = []byte{
 	// 121 bytes of the wire-encoded FileDescriptorProto
 	0x0a, 0x14, 0x74, 0x65, 0x73, 0x74, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x77, 0x65, 0x61, 0x6b,
@@ -75,20 +56,14 @@
 	if File_test_test_weak_proto != nil {
 		return
 	}
-	messageTypes := make([]protoreflect.MessageType, 1)
 	File_test_test_weak_proto = protoimpl.FileBuilder{
 		RawDescriptor:      xxx_File_test_test_weak_proto_rawdesc,
 		GoTypes:            xxx_File_test_test_weak_proto_goTypes,
 		DependencyIndexes:  xxx_File_test_test_weak_proto_depIdxs,
-		MessageOutputTypes: messageTypes,
+		MessageOutputTypes: xxx_File_test_test_weak_proto_messageTypes,
+		FilesRegistry:      protoregistry.GlobalFiles,
+		TypesRegistry:      protoregistry.GlobalTypes,
 	}.Init()
-	messageGoTypes := xxx_File_test_test_weak_proto_goTypes[0:][:1]
-	for i, mt := range messageTypes {
-		xxx_File_test_test_weak_proto_messageTypes[i].GoType = reflect.TypeOf(messageGoTypes[i])
-		xxx_File_test_test_weak_proto_messageTypes[i].PBType = mt
-	}
-	proto.RegisterFile("test/test_weak.proto", xxx_File_test_test_weak_proto_rawdesc_gzipped)
-	proto.RegisterType((*WeakImportMessage)(nil), "goproto.proto.test.WeakImportMessage")
 	xxx_File_test_test_weak_proto_goTypes = nil
 	xxx_File_test_test_weak_proto_depIdxs = nil
 }