[WIP] Rewriting the Univariate Solver

This PR aims to rewrite a cleaner and robust univariate equation solver.
    - [x] polynomial
    - [x] rational
    - [x] trigonometric
    - [ ] functions solvable by LambertW
> for example, `expr = Mul(x, Pow(x, -1), evaluate=False)`

Thanks I have added an example in the docstring.