Add support for union, binary fields, and empty structs.

`unions` are just loaded up as `structs` for now. In the future we might
want to modify `_compat.init_func_generator` to enforce the restriction
that you are only supposed to set one of the fields of a union.

`binary` fields are just special cases of `string`, so when receiving
`string` fields in the binary protocol, we try to decode as `utf-8`
first, but if that fails we just return the bytes.

There were a few places where the grammar had `OneOrMore` instead of
`ZeroOrMore`, which prevented declaring empty structs. I've fixed that.
Add initial versions of Storm test data
Reorder storm.py definitions to match storm.thrift and fix flake8 issues.
Add service classes to storm.py
Add unit tests for union and empty structs.
Merge pull request #14 from dan-blanchard/support_storm

Add support for union, binary fields, and empty structs