add Set.boundary property
naive solution for Union._boundary
add ProductSet._boundary
Boundary of empty set is empty set
Boundary of UniversalSet is EmptySet
Boundary of naturals/integers is self
ImageSet maps lambda onto boundary
boundary of Range is self
ProductSet(single_set) == single_set
ProductSet._union joins equal args if at top or bottom

     ProductSet(a, b, c) + ProductSet(a, d, e)
->   ProductSet(a, ProductSet(b, c) + ProductSet(d, e))
un-XFAIL boundary-line test
add Set.is_closed property
bigger docstring for Set.boundary
add interior and closure to Sets
add Set.is_open
Union._boundary removes sets found in interior
clean up Set.boundary docstring
remove ImageSet._boundary
Merge pull request #2744 from mrocklin/set-boundary

Set boundaries / limit points