Refactoring the code - First pass

1] Added helper functions for the various heuristics
2] Improved the documentation
3] Rewrote the second heuristic according to a new algo
Made the following changes

1] PEP 8 modifications
2] Changed the structure of infinitesimals similar to dsolve
3] Used dummy instead of Symbol
4] Updated sphinx docs
Added Value Errors and Not Implemeted Errors
Merge pull request #2286 from Manoj-Kumar-S/refactor

Refactored the heuristic code and rewrote the second heuristic
Merge branch 'master' into single_code_base

Conflicts:
	sympy/solvers/ode.py