Various bits of work on `Interval`

- made the constructor `I` strict for better performance
- added `ival'` and `ispan`
- corrected `Show` instance to always produce valid Haskell code
- added valid `Read` instance in correspondence with the new `Show` instance
- added `Bounded` instance