Added method of intersection for ImageSet with Integer as baseset

So, you mean if hashes of the input are same, which should imply the input to the function are same then the output should also be the same which wasn't the case because the hashes are not same. I think we should not have `hash(Lambda(n, n)) == hash(Lambda(m, m))`. That is also the behavior of Python `lambda`.
```
In [1]: f = lambda x: x

In [2]: g = lambda y: y

In [3]: hash(f)
Out[3]: -9223372036853107475

In [4]: hash(g)
Out[4]: 1680133

In [5]: hash(f) == hash(g)
Out[5]: False
```