Merge branch 'master' into integrals

Conflicts:
	sympy/functions/elementary/piecewise.py
	sympy/integrals/integrals.py
	sympy/integrals/tests/test_integrals.py
fixed bug in ``_separate_sq``; improved coverage
Factors() can handle S.Infinity.

Fixes issue 3807: simplify(tan(zoo) + oo) throws an exception
http://code.google.com/p/sympy/issues/detail?id=3807
Raise NotImplementedError for .evalf() on indefinite integrals.

Fixes issue 3808: Calling .evalf() on indefinite integral throws an exception
http://code.google.com/p/sympy/issues/detail?id=3808
Simplification now hooked to simplify.
A bug fixed. Tests updated.
Tests updated.
Code quality improved.
Pyflakes cleanup to pretty printing
Pyflakes cleanups to matrices
Add table method to Matrix, and modify the string printer

I took this from Chris Smith's work from pull request #1167. I haven't fixed
any of the resulting test failures yet.
Merge pull request #1916 from asmeurer/piecewise_print

Fixes to printing
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.
Update lambda printer for Matrix
add pypy tests for travis
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