Add Structs to Dictionary Thrift

This is almost certainly not quite right yet, although trying to do the _bare minimum_ to support structs in Dictionary. This PR doesn't allow for import, and thus I have punted on places where the struct is actually used.

EDIT: I haven't done anything about `List` yet - will add separately.
> My only concern is the separation of ThriftDictionaryEncoding and ThriftDictionaryFeatureValue...  I assume this was so we don't have to break compatibility with the enum for a first pass.

Yes. I _think_ this is preferable than just creating a whole new version, at least for now. I'll put a note in this class for when we do have a time/reason for creating a new version.

FWIW I feel pretty annoyed/guilty about this - it's not like I didn't know structs were coming when I wrote this in the first place. :(