Modified DynamicIntervalTree to collect all overlapping/containing intervals in a single pass through the tree.  This saves the overhead of removing/re-adding intervals.