[WIP] Rewriting the Univariate Solver

This PR aims to rewrite a cleaner and robust univariate equation solver.
- [x] polynomial
- [x] rational
- [x] trigonometric
- [ ] functions solvable by LambertW
- [ ] write 4 tests to complete coverage
- [ ] correct typo
`<expr>.match` _can_ return `None` if no match is found but I'm not able to find an example for our particular pattern.