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 issues do you think would occur?

I tried calculating this out on a spreadsheet, and it seems alright as far as I can tell. 
https://docs.google.com/spreadsheets/d/1aTi8NgIGg7wBdNf_bzglYIJyokBe6-iYb6HEWzEpdKw/edit?usp=sharing