[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
Now the filtering of the complex solution is done by the intersection method. See https://github.com/hargup/sympy/commit/21e3c8269bef8928e84d72b5979a5305cf61d218
It behaves in more or less the expected fashion except for things like `FiniteSet(x).intersect(S.Reals)`.