Parametrised intervals

Interval arithmetic rewritten to use parametrised intervals.
Tests pass.
In `isthin(x)`, I think it is worth to parametrize `x` as an `Interval`, i.e., to define `isthin(x::Interval)`;  this applies to `guarded_mid(x)` below as well. By the way, we already have a function that yields the mid-point of an interval, `mid(x)`, so I'd recommend to use it. From the question you raise (as a comment) on `isthin`, which I guess motivates `guarded_mid`, I guess that there are subtleties when the mid-point is zero. I don't know if this is related or not, or if it may help, but another possibility to check if an interval is thin is to use its diameter, so: 
`isthin(x::Interval) = (d = diam(x); d < eps(d))`. In any case, I think `isthin` and `guarded_thin` should be moved to interval_arithmetic.jl