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

Nested collections are supported, which include array, dict, list, set, and tuple.
we gotta have a few of similar implementations already for this. I think @yhuai was consolidating them. @yhuai can you comment on whether this would still be necessary after your consolidation?