Fix a bug where build identifiers in ranges could be removed.
Explicitly track the upper bound of ranges that exclude pre-releases.
Fix a constraint-parsing bug.
Expose VersionUnion, make VersionRange comparable, and add VersionConstraint.difference().
Add more set operations for version constraints.