An amortized running time is given for each operation, with n referring
to the length of the sequence and i being the integral index used by
some operations. These bounds hold even in a persistent (shared) setting.

This implementation is based on a binomial heap augmented with a global root.
The spine of the heap is maintained lazily. To force the spine of the heap,
use seqSpine.

This implementation does not guarantee stable behavior.

This implementation offers a number of methods of the form xxxU, where U stands for
unordered. No guarantees whatsoever are made on the execution or traversal order of
these functions.

span, applied to a predicate p and a queue queue, returns a tuple where
first element is longest prefix (possibly empty) of queue of elements that
satisfy p and second element is the remainder of the queue.

break, applied to a predicate p and a queue queue, returns a tuple where
first element is longest prefix (possibly empty) of queue of elements that
do not satisfyp and second element is the remainder of the queue.