Provide clear and isEmpty
Stress test and fix IntervalHeap

IntervalHeapStressTest generates calls to offer, getFirst, and getLast
in random order with random values, and asserts that heap invariants
hold after each call.

Fixed IntervalHeap.offer, where in the case an element is added to the
end of the max heap, the added value might not have been swapped with
its sibling in the min heap.
Override addAll in DualQueue

This is more efficient than the java.util.AbstractQueue.addAll.