Support for nested list and maps

This adds the support to write nested list and map thrift structs to parquet and also derive the corresponding hive schema for them.

Unfortunately the Hive parquet SerDe itself currently does not support nested maps and lists so hive won't be able to read or write to these tables. An issue has been raised with Cloudera to get this addressed.
this is probably a good example of a place where numeric indexes are preferable to `.head` and `.tail.head` :)