I agree that it makes sense to have some sane default.  For example I think it's reasonable for `Interval.universal_set = S.Reals`.  

Probably `FiniteSet.universal_set` is some function that looks at all of the elements, if they're all real then it returns S.Reals, if they're all complex returns S.ComplexPlane (when it exists), and maybe returns UniversalSet() otherwise.