Added method of intersection for ImageSet with Integer as baseset

On Wed, Jun 18, 2014 at 07:29:59AM -0700, Harsh Gupta wrote:
>    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

No.  I mean, that the output has different hashes, which imply the input
should be different too.  But it isn't:
In [1]: imageset(Lambda(m, 2*m), S.Integers).intersect(imageset(Lambda(n, 3*n), S.Integers)) == imageset(Lambda(m, 2*m), S.Integers).intersect(imageset(Lambda(m, 3*m), S.Integers))
Out[1]: True

>    I think we should not
>    have hash(Lambda(n, n)) == hash(Lambda(m, m)). That is also the behavior
>    of Python lambda.

But Lambda is not a Python's lambda.  I don't sure there is a problem.