Feature/lbfgs

This pull request implements L-BFGS.  It includes a small refactor of the BFGS optimizer and adds a basic unit test for L-BFGS.

On a logistic regression and least-squares problem L-BFGS finds the optima as quickly or quicker than BFGS.

Longer term it may be worth making this the new default, but for now it can remain an option.