consolidate exp._eval_power and Pow._eval_power

Consolidate exp._eval_power into Pow._eval_power as much as possible.

Details are given in the commit's log.

In master, the lhs is incorrectly reported with a negative of the rhs
```
    assert sqrt(exp(3 + I)) == exp(S(3)/2 + I/2)
```
these are not recognized of being able to combine exponents
```
    ((1 + I)**(I*pi/(2*log(sqrt(2)))))**(S(1)/3)
    ((1 + I)**(-I*pi/(2*log(sqrt(2)))))**.3
    ((1 + I)**(-I*pi/(2*log(sqrt(2)))))**(1/S(3))
    ((1 + I)**(-12*I*pi/log(sqrt(2))))**(1/S(3))
```
I was using what sympy gave for arg(a+ib) = atan(b/a) -- except only when using actual numbers as in arg(2+3*I) == atan(3/2). So that logic would only apply if re(e) >= 0. When re(e) is negative then the range goes to -pi to pi instead of -pi/2 to pi/2.

There is something weird with sympy and the arg calculation. Wolfram lists arg(a+i*b) as -i*log((a+i*b)/abs(a+i*b)). If I enter that, expand and simplify, it doesn't round-trip:

```
>>> -I*log((a+I*b)/abs(a+I*b))  # wolframalpha's expression for arg(a+i*b)
-I*log((a + I*b)/sqrt(a**2 + b**2))
>>> expanded = _.expand(complex=True)
>>> expanded.count_ops()  # it's large and different
326
>>> simplify(expanded)
arg((a + I*b)/sqrt(a**2 + b**2))
```