Fix negative intervals in with_semitones
Simplify Interval.inverse operation