Improve QuadraticStepSize

* Use previous step size in case interpolation is not done
* Use floats.EqualWithinRel rather than own comparison
* Use interpolation only if there is a chance of interpolating the
  function well by a quadratic
* Remove MinStepSize, it is not necessary that users manipulate it
It seems like this should have some gradient test. In Bisection, for example, the threshold happens when the function values are close and the gradients are small. If you have two function values that are the same, but the gradients are large and opposite, the minimum is clearly somewhere in the middle of them.