[SPARK-2010] Support for nested data in PySpark SQL

Nested collections are supported, which include array, dict, list, set, and tuple.
So I think a key question here is if nested dictionaries are Maps or Structs.  Right now the outermost dict is treated like a struct with named attributes, so I'm kind of inclined to continue that trend.  Although, I think then we would want some way to create a map.  What do you think?