RootFinding: apply common algorithms pattern
First commit working on optimization tools

(Patched by cdrnet: only taking root finding algorithm for now, rest
later)
Implement expansion in BisectionRootFinder
RootFinding: move bisection to root-finding namespace, update portable project
RootFinding: update tests
RootFinding: align algorithms, no need for objects
RootFinding: separate bracketing from algorithm, unify error behavior
RootFinding: add hybrid newton-raphson/bisection algorithm