Fix L-BFGS

This PR fixes a bug in the computation of the descent direction and modifies the step size on the first iteration.

The bug was in updating the L-BFGS history which was basically one iteration off. Consequently, the generated descent directions were not correct and too many iterations and function/gradient evaluations were necessary for convergence. Fixing this bug reduces the stats to some 38 iterations and 60 function evaluations for the Rosenbrock function from (-1.2,1).

Also, the step size on the first iteration is modified so that the first attempted step is in fact the *normalized* steepest descent step. This is consistent with other optimization codes, e.g., with the original Nocedal's L-BFGS code. Furhermore, it improves the performance on the above test problem to some 34 iterations and 45 function evaluations which are very reasonable and expected numbers.
You have to be cautious about tuning things too much to optimize on the rosenbrock. It's only one function, and it's not a particularly interesting one. In the way you suggest, if the original magnitude is gigantic, then the original step is miniscule, which can cause problems. That's why I originally set it to the square root of the distance. If the magnitude is really high, it takes a longer step than 1 but not enormous. If the value is low, it takes a smaller step, but not tiny. If the standard practice is to just make it a unit step that's fine too. It's impossible to know the hessian with just the function value and the gradient.