update to sgd
updates to tls

updates to tls and tls.distance

the tls.distance minimization now starts with x.error s.t. x + x.error =
0.5
Previously, tls.distance minimization had started with x.error = 0, or
x.error estimates from previous iterations. One might expect that
starting with a good estimate of x.error would produce better results in
less time. However, the actual result is very much the opposite.

enforcing parameter bounds was greatly simplified