consolidate _eval_power processing from exp into Pow

The two routines should almost be the same but they weren't. Now
exp (except for some special cases as a function) defers to Pow's
version of _eval_power. Some slight differences are now seen in
test results.
consolidate exp._eval_subs processing into Pow._eval_subs

The logic for _eval_subs has been consolidated as much as possible
between exp and Pow. There were things that the one was doing that
the other was not. In addition, the decision about whether to make
a certain substitution or not is more limited in scope: one should
not obtain an expression which is not supported by the power laws.

e.g. exp(2*x).subs(exp(x),y) -> y**2 but if the exp(x) is exp(3*x)
then the substitution will fail since exp(x)**(2/3) != exp(2*x/3).