Improve Interval[A].

This commit adds some new operators: ~ and --.

~x returns a list of intervals which comprise the complement of x.

x -- y returns a list of intervals which are in x but not y.

The commit also fixes a subtle interval bug with intersection.

This commit fixes a small bug with intersection, and
moves all tests into a "tests" submodule
Add Interval.apply method to parse strings, tests, etc.

This commit allows users to specify an Interval[Rational] via a string.
It adds some tests for as well as -- which caught a bug.