Used by subclasses to serialize extensions. Extension ranges may be
interleaved with field numbers, but we must write them in canonical
(sorted by field number) order. ExtensionWriter helps us write
individual ranges of extensions at once.

Lite equivalent to GeneratedMessage.GeneratedExtension.
Users should ignore the contents of this class and only use objects of
this type as parameters to extension accessors and ExtensionRegistry.add().

Create a new isntance with the given parameters.
The last parameter singularType is only needed for enum types.
We store integer values for enum types in a GeneratedMessageLite.ExtendableMessage
and use Java reflection to convert an integer value back into a concrete
enum object.