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
Merge pull request #2156 from Manoj-Kumar-S/heuristic2

Heuristic 2