Add Predecessible and methods to Interval

This also improves the tests on Interval by actually generating Intersections (whoops), which uncovered a bug when doing Intersection.intersect with anything other than another Intersection.