UPDATE:
 - saner and cleaner "should I move?" handling, moved to enqueue_move()
where it actually belongs.
 - initial first move to (0,0,0) if explicit in GCode input, as it
should be.
SNAPSHOT:
 - added drain movement queue logic to gcode-canon
UPDATE:
 - vector_side_math() and offset_math() ported to gcode-math from
playground.