Interleaving for unions with infinite sets

Fixes #8342 
Unions with infinite elements now interleave.
Uses the roundrobin recipe from the documentation for itertools:
https://docs.python.org/2/library/itertools.html#recipes

```
>>> solns = solve_univariate_real(sin(x), x)
>>> solns
ImageSet(Lambda(_n, 2*_n*pi), Integers()) U ImageSet(Lambda(_n, 2*_n*pi + pi), Integers())
>>> for i in zip(solns, range(10)):
...  print i
... 
(0, 0)
(pi, 1)
(2*pi, 2)
(3*pi, 3)
(-2*pi, 4)
(-pi, 5)
(4*pi, 6)
(5*pi, 7)
(-4*pi, 8)
(-3*pi, 9)
```
Let's always return roundrobin of the iterable args (just `return roundrobin(*(iter(arg) for arg in self.args))`), that way every generator in the set will get an opportunity to be seen. I checked that the args are canonically sorted, so don't worry about that.