REFACTOR and UPDATE of fitting APIs and implementation

curvefit.Fit() was refactored to be more robust and much simpler.
OrderedDict is used throughout, used better naming conventions and
idioms, and implemented error reporting.

Also fixed errors caused by use of functools.partial when fixing
parameter values for fit; it hides the original function name! So
now the Fit.fitfunc instance variable is the original (non-partial)
fit function. When calling a Fit object, it uses all the parameters
stored in Fit.parameters, which are all mutable (for the moment.)
This way you can play with all parameters, even ones that were fixed
during fitting.

API to Fit is implified to use only __call__(), __getitem__(), and
plot(), and the instance variables .parameters and .fixed

Experiment.fitForceExtension() now takes x and f as named arguments
instead of ext and force, and kwargs => fitOptions and arglist
reordered to clean up function calls.

The fit is saved to .fit instance variable.

Also plots the fit on top of the data if the figure exists.