Atan2: handle imaginary args and more rewriting as arg

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.