Add support for "lateral enums" that compile to a native format in both Java and ObjC

The goal for this approach is described in README_EXTENSIONS.md. In short
enums should have a type that can be persisted and switch and do == comparison
on both platforms. ints are the most obvious choice for this. "lateral enums"
are two annotations @EnumDeclaration and @EnumValue that can thread
(and self-document) an enum int through transpiled code. In ObjC the int
is represented as the standard 'typedef enum' and in Java the convention
should be an interface with constants.