Added method for intersection for ImageSet

```
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