less flattening in Add and Mul

* sympy/core/add.py
    - in the 2-arg optimization
        o if an Add is encountered in the 2-arg optimaztion code
          let the main loop handle denesting of it; a test was added for this
        o don't expand the 2-arg mul

* sympy/core/mul.py

    - in the 2-arg optimization (as for Add), if an unevaluated Mul
      is encountered, let the main flattening loop handle it; a test was added

    - in the main flattening loop
        o restrict the 2-arg add distribution to purely commutative
	  expressions; now, at least, 2*(A+B) won't distribute any more
	o removed note about I being unevaluated if it has a Rational exponent;
	  what is actually happening is that I is always being treated as
	  (-1)**(1/2).

* sympy/core/strategies/tests/test_traverse.py

    - apparently the removed code from the 2-arg mul optimization allows
      this test to be modified without the need for rebuild (which I think
      is a good thing)

* sympy/core/tests/test_arit.py

    tests described above were added; test that no longer conforms to
    criteria was changed

* sympy/core/tests/test_expand.py

    a test is changed because of greater care in not distributing Number on
    non-commutative Add

* sympy/functions/elementary/tests/test_exponential.py

    test changed to equivalent forms

* sympy/integrals/tests/test_transforms.py

    wrapped a long test

* sympy/simplify/tests/test_simplify.py

    radsimp is apparently using an unevaluated Mul and that could be
    changed, but for now I just modified the test that failed because
    the unevaluated Mul is not longer denested. expand could also be used
    to denest it.
move perfect powers removal to _eval_expand_log
minor edits
multiplication leaves unevaluated Mul as Mul, not Add

This fixes issue 3798, too.
leave Mul as Mul after subs when hack2 is True
Merge pull request #2080 from smichr/uneval

less flattening in Mul and Add; perfect powers are not removed from log