DO NOT MERGE Fix bug with large extension field numbers.

Previously, extensions with field numbers greater than 268435455 would
result in a compile time error in generated code that looks something
like this:

Foo.java:3178: error: integer number too large: 3346754610
                3346754610);

This is because we were trying to represent the tag number (an
unsigned int) using a java int constant, but java int constants are
signed, and can't exceed Integer.MAX_VALUE.

Fixed by declaring it as a long instead, and casting it down to an
int in the implementation. This is safe, because the tag value always
fits in 32 bis.

This is a cherrypick of change b7cf53ba3b46eb17180465d3d3bb151fa4d93f3d
from master.

Change-Id: If2017bacb4e20af667eaeaf9b65ddc2c30a7709f
3 files changed