Added method of intersection for ImageSet with Integer as baseset

We have something like `Intersection(f, g)` in the first case, where `f=imageset(Lambda(m, 2*m), S.Integers)` and `g = imageset(Lambda(n, 3*n), S.Integers)`, and `Intersection(f,h)` in the second case, where `h = ImageSet(Lambda(m, 3*m), S.Integers)`, `hash(g)=hash(h)`.  All arguments of Intersection have same hashes in both cases.  But for rhs - they are different:
```
In [5]: hash(ImageSet(Lambda(t, -6*t), S.Integers))
Out[5]: 6735991267090917195

In [6]: hash(ImageSet(Lambda(t, 6*t), S.Integers))
Out[6]: 8366958085273728911
```
```