v4

1. Revert `^` behavior to SemVer 2.x.
2. Handle prereleases in less surprising ways.
3. Document desugaring advanced range syntax to simple comparators.
This could do with an example including `0.x.y` just to be absolutely clear that the behaviour <1 there is the same as >1, important since `^` is so quirky <1. Perhaps even mention that the behaviour is the same across all majors?