Initial commit of functions from github.com/btracey/optimize
Removed useless and misleading Hessian initialization
Changed Minimize to allow the Method to also be a statuser
Changed package name from optimize to opt
Moved nil settings check earlier in minimize to before settings is needed.
Modified BFGS update rule to use Inner and RankOne rather than computing explicitly. 30% speedup.
Removed NoLinesearch capability from GradientDescent. This can be done with a custom line search implementation.
Many minor fixes responding to PR comments
Changed minimize to send the optimum location to the printer so it can print the final value.
Fixed convergence checks so it ends on the Maximum number and not one more
Changed JustFunction and JustGradient to FunctionOnly and GradientOnly
Make BFGS more robust.
There are two changes. The first is that the BFGS hessian was not initialized properly
so that if the structure was re-used, old values of the hessian would polute the
next step. Second, added a test for near-equality of function value in bisection.
The function value converges faster than the gradient, and floating point noise
can corrupt the linesearch. This allows BFGS to converge to machine precision
(where before it could only converge to a norm of 1e-9) on a third part dataset.
Implemented maximum linesearch iterations.

Previously, if the linesearch optimization never returned true, the linesearch would continue forever, even
when no progress could be made. This adds a high-level check to make sure this condition throws an error.
100 iterations should be enough for any linesearch.
Modified Bisection function value check to only take place when the magnitudes of the gradient are small
Added a check for function value == -inf. Added a future test for a linear funciton, though the optimizers do not currently pass it
Added Early and Err methods to Status, and removed the implicit signed nature of them.
Moved minimize loop into its own sub-function
Changed to FunctionEval (etc.) from FunctionOnly
Updated Iteration constants to have more flag-like behavior
Changed Settings and Stats field names to make them shorter and more consistent