[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
This is probably a bug

```Python
In [2]: FiniteSet(x).intersect(S.Reals)
Out[2]: {x}
```

Or more precisely

```Python
In [3]: x in S.Reals 
Out[3]: True
```