Adds Levenberg-Marquardt search method.

Also adds top-level curve_fit() and estimate_errors() methods.

Still need to make some decisions about how to integrate this into the
optimize() method. My main concern is that the Levenberg-Marquardt method
expects a different form for the function F(x). With the other methods you
direclty pass the cost function to mimize, e.g.:
   F(x) = Sum_i |f_i(x)|^2
For this minimizer, you instead pass the vector [f_i(x)..].

For this reason, I wonder if there ought to be a separate leastsq(...) interface
for optimizers that expect this sort of signature.