[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 isn't clear to me.  

After playing with it I think that this rewrites the equation  `f(symbol) == y` to isolate `symbol`.  I suggest the argument names `f, x, y` and a docstring header saying something like 

    "Solves the equation ``f(x) == y`` for ``x``"