proto: allow nil with Clone

The v1 behavior of Clone returned nil as is.
Replicate this behavior in v2 for easier migration.

Change-Id: I79d93f15dd9913604027e31e5d9ff309e0c2da61
Reviewed-on: https://go-review.googlesource.com/c/protobuf/+/220437
Reviewed-by: Damien Neil <dneil@google.com>
diff --git a/proto/merge.go b/proto/merge.go
index 05cdafc..16a79d6 100644
--- a/proto/merge.go
+++ b/proto/merge.go
@@ -39,6 +39,9 @@
 	// Embedding protobuf messages breaks this since the parent type will have
 	// a forwarded ProtoReflect method, but the Interface method will return
 	// the underlying embedded message type.
+	if m == nil {
+		return nil
+	}
 	src := m.ProtoReflect()
 	if !src.IsValid() {
 		return src.Type().Zero().Interface()