coalesced_intervals: maintain maximally coalesced 1D intervals

extern crate coalesced_intervals;
fn main() {
let mut ivals = coalesced_intervals::CoalescedIntervals::new();
ivals.add(0, 1);
ivals.add(2, 3);
assert_eq!(ivals.to_vec(), [(0, 1), (2, 3)]);
ivals.add(1, 2);
assert_eq!(ivals.to_vec(), [(0, 3)]);
assert!(ivals.contains_partial(-1, 1));
assert!(ivals.contains_partial(1, 2));
assert!(ivals.contains_partial(2, 4));
assert_eq!(ivals.get_interval_containing(1), Some((0, 3)));
assert_eq!(ivals.get_interval_containing(4), None);
assert_eq!(ivals.get_first_start_from(-1), Some((0, 3)));
assert_eq!(ivals.get_first_start_from(0), Some((0, 3)));
assert_eq!(ivals.get_first_start_from(1), None);
}