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
- [x] correct [this failure](https://github.com/sympy/sympy/pull/7523#issuecomment-62201765)



### 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
- [ ] use something like [this](https://github.com/sympy/sympy/pull/7523#issuecomment-62198981) to handle the XFAILed test `test_real_imag_splitting1`, this will be handled in the set module.