Readability improvements to SortShuffleReader

Some of the changes include:
* Changed ioSortFactor to maxMergeWidth to clarify what it means.
* Changed "partition" to "block" to avoid confusion with Spark's more typical use of the word partition.
* Added header documentation.
* Rearranged and documented the main merge loop.
I'm afraid this will make merge factor too small and too many spilled files if memory is not enough, extremely, if the memory can only fit for one block. Besides now the merge factor is controlled by memory size, not mergeWidth.