[WIP] Rewriting the Univariate Solver

This PR aims to rewrite a cleaner and robust univariate equation solver.
- [ ] Univariate
    - [x] polynomial
    - [x] rational
    - [ ] trigonometric
    - [ ] functions with exp and log
- [ ] Multivariate
I would not like to go with the assumption, mainly because assumptions have other options like `positive=True` and `integers=True`. Using assumption to choose the solver might give the end use a perception that solvers for other domains like integers are also supported. Using `real=True` parameter is more explicit and doesn't give room for such confusions.