PARQUET-103: support for empty structs in Thrift

It is tricky to support in parquet because struct fields are stored in the definition levels of the fields they contain.
So if there is no content, they can not be stored.
Basically, I'm adding an artificial optional field in the struct that will be always null but will store whether the struct that contains it is defined or not.
same, will clean up