Constructs a new RangeSet, which can store numeric ranges.
Ranges are treated as half-closed: that is, they are exclusive of their end
value [start, end).
New ranges added to the set which overlap the values in one or more existing
ranges will be merged.