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.
What my concern is that to avoid disk spilling we should do more merge actions compared to previous code, this will introduce additional serialization and compression,  I'm not sure how to balance disk spilling and serde-compression overhead.