[WIP] Rewriting the Univariate Solver

This PR aims to rewrite a cleaner and robust univariate equation solver.
- [x] polynomial
- [x] rational
- [x] real trigonometric
- [x] write 4 tests to complete coverage
- [x] correct typo
- [ ] correct [this failure](https://github.com/sympy/sympy/pull/7523#issuecomment-62201765)
- [ ] use something like [this](https://github.com/sympy/sympy/pull/7523#issuecomment-62198981) to handle the XFAILed test `test_real_imag_splitting1`

### Nonblocking todo

- [ ] functions solvable by LambertW
- [ ] functions that can be recast as polynomials with a change of variables [this, for example](https://github.com/sympy/sympy/pull/7523#commitcomment-8338203); this can be factored out of solve where multiple generators are handled

Yes it is an issue with the sets module
```
In [17]: from sympy.abc import y

In [18]: FiniteSet(y).intersect(S.Reals)
Out[18]: EmptySet()
```