Fix merging with message-valued oneof

If messages A and B have the same oneof case, which is a message
type, and we merge B into A, those sub-messages should be merged.

Fixes #3200.

Note that I haven't regenerated all the code, as some of the protos
have been changed, breaking generation.
diff --git a/csharp/protos/unittest_issues.proto b/csharp/protos/unittest_issues.proto
index 6c9f763..332c81d 100644
--- a/csharp/protos/unittest_issues.proto
+++ b/csharp/protos/unittest_issues.proto
@@ -124,3 +124,18 @@
   string description = 2 [json_name = "desc"];
   string guid = 3 [json_name = "exid"];
 }
+
+// Issue 3200: When merging two messages which use the same
+// oneof case, which is itself a message type, the submessages should
+// be merged.
+message OneofMerging {
+  message Nested {
+    int32 x = 1;
+    int32 y = 2;
+  }
+
+  oneof value {
+    string text = 1;
+    Nested nested = 2;
+  }
+}
\ No newline at end of file