Support for interval negation and inversion

Basic problem: We can only add simple intervals Because the Interval type
contains both simple and compound intervals we are forced to do awkward modulo
arithmetic. Probable solution: make a separate type for simple intervals and
represent intervals as (Octave, SimpleInterval). Octave is allowed to be
negative, so intervals become AdditiveGroup etc.