factor inner classes out of ThriftStructMetadataBuilder
Add Union support to swift.

An union bean must be annotated with @ThriftUnion("name"), similar to @ThriftStruct.

In addtion, it must have a getter or a field marked with @ThriftUnionId. This is used when
serializing the object to determine which field is read. Fields are marked with @ThriftField just as
a @ThriftStruct, however only one field is ever written or read.
Add unit tests for Thrift Union support.
Update the generator to support unions.

Add union code for all three java flavors. Additionally, update the test metastore.thift to the current version.
factor out common code in the metadata builders
fixup for 862ffa365b7448cf871303efb7c272fbd86bd62a, will be squashed
Add an "isSet<typename>" test method to the generated sources.

This is the same that the thrift compiler does and some callers expect them to be present.