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`, because really `ThriftDictionaryFeatureValue` is mandatory if the dictionary encoding is STRUCT and should not be specified if it is not. I assume this was so we don't have to break compatibility with the enum for a first pass, if that is the case, I am ok with that for now, but as soon as we are going to break compatibility I think we should type this a little bit better which would be something like:

```
struct IntEncoding {}
struct ...Encoding {}
struct StringEncoding {}
struct StructEncoding {
 1:  list<ThriftDictionaryStructMeta> values;
}
union ThriftDicitonaryEncoding {
 1: IntEncoding intEncoding;
 2: ...
 n: StructEncoding structEncoding;
}
```