Added method for intersection for ImageSet

```
In[10]: s = imageset(k, pi*k, S.Integers)

In [11]: pprint(s)
{π⋅k | k ∊ ℤ}

In [12]: pprint(s.intersect(Interval(0, 10)))
{0, π, 2⋅π, 3⋅π}
```

References

http://www.cs.berkeley.edu/~fateman/papers/sets.pdf
this pr should be rebased.  ImageSet now *has* \_intersect method.