atan2 recognizes im args

The test used to decide whether to rewrite atan2 as arg did not discriminate against imaginary arguments for which the given expression did not apply. In addition, imaginary args are now recognized by the eval method of atan2 so something like atan2(2, 3*I) will not remain unevaluated.


In master

```
>>> from sympy import *
>>> atan2(2*I,I)
atan2(2*I, I)
>>> _.rewrite(arg)
-atan(1/2) + pi
>>> _.n()
2.67794504458899
>>> atan(2).n()
1.10714871779409
```

The rewriting is wrong and the imaginary arguments were not recognized.

In this branch

```
>>> from sympy import *
>>> atan2(2*I,I)
atan(2)
>>> atan2(2*I,I,evaluate=False)
atan2(2*I, I)
>>> _.rewrite(arg)
atan(2)
```

What is this `AppliedUndef` for?