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
add BINARY TType to cybinary protocol

The cybinary protocol uses local cdef TTypes, which was missed in #14
update package meta datas
some docs fixes

- fix typos
- add changlog and contributors links
add changelog, version bumps to v0.1.3
cache thrift_file load
ignore .thrift.cache files
code refactoring for token cache
Merge pull request #12 from noodle4u/master

cache thrift file on load
no need for cache benchmark, it just works
remove useless line in travis ci
fix __version__ import error
compatiable fix for py2.

FileNotFoundError is py3 only.
encoding fix for type() function in py2
binbuffer