Make QuadraticInterpolateStepSize more robust

* Improve computation of the step size estimate for the very first
  iteration based on |x_0|_\infty, |grad|_\infy, |f(x_0)|. The
  formulas are based on W. Hager's CG_DESCENT code.
* On subsequent iterations, estimate the initial step size as the
  minimum of a quadratic interpolant provided that the relative change
  in the objective function value is large enough for the interpolation
  to make sense. This avoids problems near the minimum.