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.
Hi sandy, Seems you use `blocksAwaitingMerge.size()` to replace `numSplits` to calculate the merging number, I'm not the semantics is still the same. Since our merging thread is running parallel with fetch thread, so we the size of `blocksAwaitingMerge` is still increasing, is not a constant value. I'm not sure using this value to calculate the merging number is still the same as before.