Added
- Both `AtomicInterval` and `Interval` are fully comparable.
- `singleton(x)` to create a singleton interval [x].
- `empty()` to create an empty interval.
- `Interval.enclosure()` that returns the smallest interval that includes the current one.
Changed
- Interval simplification is in O(n) instead of O(n*m).
- `AtomicInterval` objects in an `Interval` are sorted by lower and upper bounds.