Structs
Interval represents a closed interval on a unit circle.
Zero-length intervals (where Lo == Hi) represent single points.
If Lo > Hi then the interval is “inverted”.
The point at (-1, 0) on the unit circle has two valid representations,
[π,π] and [-π,-π]. We normalize the latter to the former in Interval::new.
There are two special intervals that take advantage of that: