SPARK-2203: PySpark defaults to use same num reduce partitions as map partitions

For shuffle-based operators, such as rdd.groupBy() or rdd.sortByKey(), PySpark will always
assume that the default parallelism to use for the reduce side is ctx.defaultParallelism,
which is a constant typically determined by the number of cores in cluster.

In contrast, Spark's Partitioner#defaultPartitioner will use the same number of reduce
partitions as map partitions unless the defaultParallelism config is explicitly set. This
tends to be a better default in order to avoid OOMs, and should also be the behavior of PySpark.

JIRA: https://issues.apache.org/jira/browse/SPARK-2203