The bump fitting algorithm has been upgraded due to my increased
understanding of the complexity of the photodiode.
Sensitivity (bump slope) decreases as you move away from a zero volt
photodiode output. Most of the time anyway. We should be able to
handle data with a gentle camber, and we need to know what voltage
corresponds to the zero-deflection signal.
This prompted the recent change of bump aquisition to begin just _off_
the surface instead of just _on_ the surface. Now we have to deal with
finding the location of the surface kink, so I split the fitting out
into its own function which least squares fits the data to whatever
model it's passed (currently via Levenburg-Marquardt).
Since the model is now it's own stand-alone entity, I got fancy and
added quadratic fits (to deal with camber) and clipping (to deal with
out-of-range signals). So there should be no more need of manually
clipping in the tweakfiles or using the --cut-contact option in
bump_analyze (which has been removed).
I also enhanced the output of bump_plot to show the guess, fit, and
residual, in case anyone needs convincing that the fit is working, or is
troubleshooting a new model.