This "fixes" a bug in intersectWith by rewriting it. The idea is that
we can extend the bitwidth of a constant range by a bit and use that to
simplify the logic around checking for wrapped ranges.
Roughly, if this is our number line with a wrapped range
|---)----[-------|
we map the wrapped range to
|--------[-------|---)------------| .. (A)
and if this is the number line with an not-wrapped range
|---[----)-------|
we map it to
|---[----)-------|----------------| .. (B)
or
|----------------|---[----)-------| .. (C)
When intersecting a wrapped range with an unwrapped one (the "hard"
case), we intersect (A) with (B) and (A) with (C); and pick the larger
of the two.
We can do the same thing for unions.
clang-format?