proto/equal: equate nil

Modify Equal to treat nil messages as equal iff both are nil.
Of special note, a typed nil pointer to T is equal to a new(T)
since they are indistinguishable from a protobuf reflection.

Change-Id: Ibf90b43a982e7376e07b4159be198f06230ec194
Reviewed-on: https://go-review.googlesource.com/c/protobuf/+/196618
Reviewed-by: Damien Neil <dneil@google.com>
diff --git a/proto/decode_test.go b/proto/decode_test.go
index b6258da..40a627b 100644
--- a/proto/decode_test.go
+++ b/proto/decode_test.go
@@ -1789,6 +1789,9 @@
 }
 
 func marshalText(m proto.Message) string {
+	if m == nil {
+		return "<nil>\n"
+	}
 	b, _ := prototext.MarshalOptions{
 		AllowPartial: true,
 		EmitUnknown:  true,