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

Nested collections are supported, which include array, dict, list, set, and tuple.
@kanzhang do you mind adding a todo here to move this once @yhuai's type system is done? This PR looks good other than adding a todo here and moving the comment above.