[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
The filtering of complex solutions is now done in `interesect(S.Reals)` part. See https://github.com/hargup/sympy/commit/21e3c8269bef8928e84d72b5979a5305cf61d218.
This should also handle https://github.com/sympy/sympy/pull/7523/files#r16025191 after we modify the behavior of `FinteSet(x).intersect(S.Reals)` to keep it unevaluated.