internal/encoding/wire: increase maximum field number

The protobuf documentation explicitly specifies (1<<29)-1 as the maximum
field number, but the C++ implementation itself has a special-case where it
allows field numbers up to MaxInt32 for MessageSet fields, but continues
to apply the former limit in all non-MessageSet cases.

To avoid complicated branching logic, we use the larger limit for all cases
if MessageSet is supported, otherwise, we impose the documented limit.

Change-Id: I710a2a21aa3beba161c3e6ca2f2ed9a266920a5a
Reviewed-on: https://go-review.googlesource.com/c/protobuf/+/175817
Reviewed-by: Damien Neil <dneil@google.com>
diff --git a/internal/encoding/wire/wire_test.go b/internal/encoding/wire/wire_test.go
index 01e4d34..f82a526 100644
--- a/internal/encoding/wire/wire_test.go
+++ b/internal/encoding/wire/wire_test.go
@@ -136,8 +136,8 @@
 		wantRaw:    dhex("f8ffffff0f"),
 		consumeOps: ops{consumeTag{wantNum: MaxValidNumber, wantType: VarintType, wantCnt: 5}},
 	}, {
-		appendOps:  ops{appendTag{inNum: MaxValidNumber + 1, inType: VarintType}},
-		wantRaw:    dhex("8080808010"),
+		appendOps:  ops{appendVarint{inVal: ((math.MaxInt32+1)<<3 | uint64(VarintType))}},
+		wantRaw:    dhex("8080808040"),
 		consumeOps: ops{consumeTag{wantErr: errFieldNumber}},
 	}})
 }