[SPARK-3382] GradientDescent convergence tolerance

GrandientDescent can receive convergence tolerance value. Default value is 0.0.
When loss value becomes less than the tolerance which is set by user, iteration is terminated.
The "solution vector" is ```weights```.  (I agree with @mengxr on this.)  I'd vote for relative convergence tolerance such as:
sum_i (oldWeights[i] - newWeights[i])^2 / numWeights