Fix documentation
:math: is changed to .. math ::
Implemented heuristics with the assumptions on xi and eta
1] xi = 0 2] eta = f(x) + g(y)
2] eta = 0 2] xi = f(x) + g(y)
Implemented abaco2_similar hint

1] It assumes xi = f(x), eta = g(x); xi = f(y), eta = g(y)
2] Corrected bug in NotImplementedError
3] Corrected minor bug in checkinfsol
Implemented abaco2_unique_unknown hint

1] Extended infinitesimals and checkinfsol for cases where the ODE
is not explicitly in the form a*df + b
2] Implemented abaco2_unique_unknown hint which assumes presence
of unknown functions and non-integer powers,
xi = f(x), eta = g(y); xi = f(y), eta = g(x)
Implemented the following heuristics:
1] General case for the unique abaco2 heuristic
   xi = f(x); eta = g(y)
2] Linear heuristic
   xi = a*x + b*f(x) + c; eta = f*x + g*f(x) + h
Made the following changes
1] Added docstrings for linear, abaco2_general case
2] Reordered heuristics
Move generic method taylor_term to Expr class
Make Pow.taylor_term a helper function to handle just (1+x)**e case
Add test for issue 3330
Changed .next() to next()
Merge pull request #2347 from skirpichev/3330-pow-taylor_term

Fix issue 3330
(-1)**n is integer for integer n
abs((-1)**n) = 1 for integer n
Evaluate sin(pi*n/2) for integer n
Evaluate cos(pi*n/2) for integer n
Implement Add.is_rational method
(-1)**n is odd for integer n
Implement AskEvenHandler.Pow method
Evaluate (-1)**((-1)**n/2 -/+ S.Half) as (-1)**n or (-1)**(n + 1)