Added
- Support for Python 3.10.
- `IntervalDict.as_dict` has an optional `atomic=False` parameter that, if set to `True`, returns intervals that are atomic.
- Experimental support for structural pattern matching (on `left`, `lower`, `upper` and `right`).
Fixed
- (breaking) Set `list(P.empty()) == []`, i.e., the empty interval is a disjunction of no interval (see [72](https://github.com/AlexandreDecan/portion/issues/72)).
- (breaking) For consistency, the empty interval is never `<`, `>`, `<=`, nor `>=` when compared to another interval.
- Comparing an interval and a value is deprecated since it is ill-defined when the value is on the left of `<=` or `>=`. Convert values to singletons first.