Match against math.MaxInt32 in the Go code.

When building for 32-bit, len() in Go returns a (signed) 32-bit value.
This was exceeding the constant (2^32) and causing a build failure.

Change-Id: I3b0c08792b0fea0be8d571ebd7ebc1714f9a86a2
diff --git a/go/protocol/protocol.go b/go/protocol/protocol.go
index ba33dde..ad8f7dd 100644
--- a/go/protocol/protocol.go
+++ b/go/protocol/protocol.go
@@ -21,6 +21,7 @@
 	"encoding/binary"
 	"errors"
 	"io"
+	"math"
 	"sort"
 
 	"golang.org/x/crypto/ed25519"
@@ -82,7 +83,7 @@
 		return make([]byte, 4), nil
 	}
 
-	if len(msg) >= 1<<32 {
+	if len(msg) >= math.MaxInt32 {
 		return nil, errors.New("encode: too many tags")
 	}
 
@@ -156,7 +157,7 @@
 	tags := bytes[4*(1+numTags-1):]
 	payloads := bytes[4*(1+(numTags-1)+numTags):]
 
-	if len(payloads) > 1<<32 {
+	if len(payloads) > math.MaxInt32 {
 		return nil, errors.New("decode: message too large")
 	}
 	payloadLength := uint32(len(payloads))