Added bug fix and test for when iterators are empty
Update ContextCleanerSuite to make sure shuffle cleanup tests use hash
shuffle (since they were written for it)
Review comments and more tests (e.g. tests with 1 element per partition)
Optimize merging phase for in-memory only data:

- If there's no Ordering requested, sort only by partition ID
- Even if there is an Ordering, don't bother going through merge-sort
  with just one stream (avoids heap pushes and pops, comparisons, etc)