Parametrised intervals

Interval arithmetic rewritten to use parametrised intervals.
Tests pass.
I guess this is possible to make it type specific if we treat ∅ as function (for example, `∅ = empty_interval`). The nasty thing then is that then we would use it as `∅(Float64)` or `∅(interval 0.1 0.3)`. I think it is nice to use it as an alias, so let's leave it as it is now.