[SPARK-2538] [PySpark] Hash based disk spilling aggregation

During aggregation in Python worker, if the memory usage is above spark.executor.memory, it will do disk spilling aggregation. 

It will split the aggregation into multiple stage, in each stage, it will partition the aggregated data by hash and dump them into disks. After all the data are aggregated, it will merge all the stages together (partition by partition).
Yes, this external merger will not support Windows. Because this is an improvement feature, does it MUST support Windows in this release? Do we run unit tests on Windows?

There is an recipe for it: http://code.activestate.com/recipes/578513-get-memory-usage-of-windows-processes-using-getpro/, but I'm not sure it cover which versions of Windows.