[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
Rather than use underscores to denote private functions maybe we should specify public ones using `__all__` at the top.  http://stackoverflow.com/questions/44834/can-someone-explain-all-in-python