Implementation of the second heuristic

The second heuristic is a method to find the infinitesimals xi and eta of
the PDE mentioned in the documentation under infinitesimals

There are four assumptions to xi and eta

1. eta = 0, xi = f(x)*g(y)
2. eta = 0, xi = g(x)*f(y)
3. xi = 0, eta = f(y)*g(x)
4. xi = 0, eta = f(x)*g(y)

g is a function got by extracting factors from the numerator and denominator
f is the function got by solving the auxilliary ODE obtained after
substituting g in the PDE. For now, it is assumed f can be obtained if
the auxilliary ode obtained is separable in f
Fix issue 3890: dsolve failing for an equality multiplied by -1
http://code.google.com/p/sympy/issues/detail?id=3890

One issue was the reordering or args, which should not happen
for Tuple instances, and another issue was the unneeded call
to piecewise_fold.
Add dsolve test for issue 3890.
Add a comment about the handling of Piecewise.
Wrap long lines.
Remove e.is_Add branch in limit():

    This should fix issues, like mentioned in
    https://groups.google.com/forum/?fromgroups=#!topic/sympy/61pRw1PINUA
    or issues 2641 and 3461.
test for limit(Sum(1/x, (x, 1, y)) - 1/y, y, oo), now raises NotImplementedError
Add XFAIL test for issue 3744
Tests for issues 3461 and 2641
Rewrite using expr.has(*symbols).
Merge pull request #2156 from Manoj-Kumar-S/heuristic2

Heuristic 2
fix reflection across horiz and vert lines
Merge pull request #2181 from jrioux/solvers

Fix issue 3890: dsolve failing for an equality multiplied by -1
Merge pull request #2000 from skirpichev/limit-add-bug

Cleanup e.is_Add branch in limit()
Merge pull request #2186 from smichr/geom

fix reflection across horiz and vert lines
pythonstartup
logjoin
rfactor and rclean
move env init to bottom; modify LG

fix negation in LG
allow errors to pass in LG
add isolve and ssolve and update parse