Support for List and Map

Thrift only has notation to say if a field is required or optional. In Scala we then translate that into an Option of the type of the field.