Optimization: update tests to use new BfgsMinimizer constructor
Optimization: Add tests involving larger numbers output from the objective
Optimization: Add tests for cases involving a constant zero region
Optimization: Handle some edge cases in BisectionRootFinder
Optimization: Handle case where optimum is found on last iteration in BFGS
Optimization: Fix bug in ObjectiveChecker and ObjectiveChecker1D

* Bug caused the checks to be run every time a value/gradient/hessian was
requested, not just the first time a request was made.