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.
It happens, thrift is pretty restrictive - if it was a scala adt instead of a "special" enum type it wouldn't be an issue - so it comes with the territory of making trade-offs for serialisation.