added optional initial bfgs inverse hessian

This is my first attempt at a pull-request - a really simple additional option for the BFGS method to accept an initial inverse hessian.  I need this feature for a problem in which the standard identity matrix generates errors in the line search routine. 
I've got a better idea.  BFGS seems to want its pseudo-hessian to be PSD always, even though the true Hessian in a full newton-style method need not be (and indeed won't be until a locally optimal point is found).  Since the whole point of this exercise isn't to get a true inverse Hessian, just a better conditioned initial pseudo-hessian, I'm going to respecify this to accept just a vector to go on the diagonal of the initial inverse pseudo-hessian, as opposed to the whole thing.

I'll update this pull request after I get some other github issues resolve on my machine...