Split the Ranged interval case class into Bounded, Point and Empty.
Added convenience apply and extractor to Ranged while the rest of the code is adapted.
Replaced expensive "equals" method.
Changed confusing notation: openAbove -> openUpper, openBelow -> openLower.
no message
Refactored Interval.isEmpty, Interval.isPoint.
Refactored isBelow(At), isAbove(At) and corrected a bug for empty intervals.
Refactored toString.
Refactored a few simple methods.
Added test cases.
Working changes.
Merge commit '356ce2cae66dd052aa85fedfe2eca5c8e149e909' into topic/interval-point
isSupersetOf can fail on empty intervals.
- renamed isBelow, isAbove to hasBelow, hasAbove, reflecting their (clarified) semantics
- renamed is(Closed/Open)(Below/Above) to is(Closed/Open)(Lower/Upper) --- because Below has an upper bound, and Above has a lower bound, the terminology is counter-intuitive
- added sys.error when calling lowerPair/upperPair on empty intervals, because it is leading right now to subtle, difficult to detect bugs
- removed upperPairAsLower, which actually extracts the lower bound of Above(lower) --- and is not used anywhere
- refactored isSupersetOf
Finished refactoring of isSuperset.
Merge branch 'master' into topic/interval-point
Continued refactoring of Interval, using an extended Bound[A] hierarchy.
Removed value embedded in Empty class, removed dependencies on AdditiveMonoid that were there just to give a dummy value.
Removed last uses of Ranged and removed its instances.
Small fixes.
Remove Ops macros in favor of Machinist.

Now that we are publishing the ops macros externally via Machinist,
it made sense to stop duplicating that code internally. Machinist
0.3.0 supports all the operator styles/names that Spire needs as
of now, and it will be easy to publish future changes as we need
them for Spire.

(We could also keep our own names map here, if we wanted to stop
relying on Machinist's DefaultOps class.)
Some README updates.
Update README documentation.
put a out-of-date warning in the GUIDE