find_bed_center_height() now determines the best probe-from height by itself.

Implemented probe smoothing. If the probe has bad repeatability, we can automatically run any given probe multiple times and average the results.

Implemented a dirty flag for the geometry. If any geometry is changed (programmatically or via G-code), the flag is set. Calibration routines that need clean geometry (i.e., everything except find_bed_center_height()) should call require_clean_geometry().

Several methods had different ways of determining bed height. This has all been replaced with the prepare_to_probe() method. It finds the bed center height (if it hasn't already this session), homes the machine, and moves the probe to the probing height.

Note that probe_height is how far the probe should raise after triggering. This is DIFFERENT from probe_from_height, which is the relative distance from the top of the printer to (probe trigger - probe_height).

Calibration methods that take a *Gcode pointer - that pointer is now optional, and they will all check to make sure it isn't null before asking it for data.

Beginnings of concrete heuristic framework are in place.

Gcode option letters for arm length offsets changed from GHI to TUV. This is because the Gcode interpreter thinks 'G' means the beginning of a G-code, even if it ISN'T the first token on the line. This bug took hours to figure out and I'm pretty sure it's a bug.

print_geometry() added - this dumps all the stuff you can set with M665 (geometry), except Z.