reflect/protoreflect: add Enum.Type and Message.Type

CL/174938 removed these methods in favor of a method that returned
only the descriptors. This CL adds back in the Type methods alongside
the Descriptor methods.

In a vast majority of protobuf usages, only the descriptor information
is needed. However, there is a small percentage that legitimately needs
the Go type information. We should provide both, but document that the
descriptor-only information is preferred.

Change-Id: Ia0a098997fb1bd009994940ae8ea5257ccd87cae
Reviewed-on: https://go-review.googlesource.com/c/protobuf/+/184578
Reviewed-by: Damien Neil <dneil@google.com>
diff --git a/internal/impl/message_reflect_gen.go b/internal/impl/message_reflect_gen.go
index efe4e89..483484b 100644
--- a/internal/impl/message_reflect_gen.go
+++ b/internal/impl/message_reflect_gen.go
@@ -14,6 +14,9 @@
 func (m *messageState) Descriptor() protoreflect.MessageDescriptor {
 	return m.mi.PBType.Descriptor()
 }
+func (m *messageState) Type() protoreflect.MessageType {
+	return m.mi.PBType
+}
 func (m *messageState) New() protoreflect.Message {
 	return m.mi.PBType.New()
 }
@@ -106,6 +109,9 @@
 func (m *messageReflectWrapper) Descriptor() protoreflect.MessageDescriptor {
 	return m.mi.PBType.Descriptor()
 }
+func (m *messageReflectWrapper) Type() protoreflect.MessageType {
+	return m.mi.PBType
+}
 func (m *messageReflectWrapper) New() protoreflect.Message {
 	return m.mi.PBType.New()
 }