don't wipe the nozzle if it is not needed
rewrote nearEnds() from PolygonList: new class AirMoveOptimizer
refactored long method joinUpSnakes
removed csg stuff
small performance optimization, don't use exceptions for normal cases
removed dead code
split conversion to csg2d from polygon to its own class

and refactored convexHull() method