Head element and Tail iterator pair
Ord are implemented by comparing sequences based on
first items (which are guaranteed to exist).
The meanings of
Ord are reversed so as to turn the heap used in
KMerge into a min-heap.
HeadTail from an
None if the
Iterator is empty.
Get the next element and update
head, returning the old head in
None when the tail is exhausted (only
head then remains).