Subclass Sorter to provide a pull based interface

The Sorter library expects to write the output all at once. We currently satisfy this by always writing to an extra temporary file. This is wasteful for small sorts that didn't need to hit disk and for large sorts as the entire stream will be written twice.

PullBasedSorter performs the same sort steps but stops short of writing the output while adding a new method to incrementally receive it.

Much of the Sorter class is protected, which allows for fairly simple extension, but there is one private method that would be nice not to duplicate. Use reflection to make it accessible.

The intent/hope is that upstream will be amenable to making this a first class way of consuming a Sorter. That would allow us to ditch our derived.