Parametrised intervals

Interval arithmetic rewritten to use parametrised intervals.
Tests pass.
Not sure about ∅ for other types, but it doesn't seem very important.

I don't know what I think `a + ∅` should return. The idea of returning `∅` is to point out that the operation is nonsensical -- if this occurs in a calculation then there was indeed a problem at a previous step. (For example, a NaN that cropped up during the calculation...)