First commit

Improved documentation and found the reason behind test failures
Improved algo to calculate degree
Dealt with most of the diff comments
Did away with the .is_Add if-else block

It returns only trivial solutions for Mul and Pow cases
Minor changes

1. Changed the algo for degree
2. Moved break statement
3. Used poly.as_dict() instead of separatevars
4. Changed dict comprehension
Fix the preview deprecation warning

See issue 3919.
Merge pull request #2196 from Manoj-Kumar-S/heuristic3

Heuristic 3
Merge pull request #2232 from asmeurer/preview_deprecation

Fix the preview deprecation warning