Split into classes for Fill, Stroke, and SatinColumn. Renamed params to be
the same across XML attributes and OptionParser. Added distinct stitch length
params for satin underlay. Renamed "satin underlay" to "contour underlay" and
split out "center walk underlay" and "zigzag underlay".
The code is ten times more readable, parameters make more sense, and everything
is specified by the user in millimeters. Basically, everything is way better.
* added "flip" option for fills to start stitching in upper left rather than right
* line up rows in abutting fills properly
* handle intersect_with_grating intersection result that is a line or single point (skip row)
* skip endpoint marker tags in SVG files (subtags look like paths)
* dashed stroke indicates running stitch (<=0.5 width still works but is deprecated)
* in running stitches, add a stitch at apex of sharp corners
Previously, each row in a fill region was offset by a random amount. This
looks better than not offsetting at all (which will create visible columns of
stitches), but humans are very good at finding patterns in randomness. The
result is that fill regions look weird.
This commit instead carefully orders the stitches in fill regions such that
each row's stitches are offset by half of max_stitch_length from the previous.
There are also a couple of other miscellaneous fixes and features in here --
sorry about that.