Created a Set Difference class

Todo list:
- [x]  fix is that self.complement(other) behaves as other - self and self._complement(other) behaves as self - other. 
- [x] Complement printers
- [x] Rebase
We should fix this problem.  Would `complement(Interval(-oo,oo)*Interval(-oo,oo))` work?