Polyobject waypoint movement is imprecise in the following ways:
This branch corrects these problems. Overshooting is no longer allowed, and the distance that was already crossed in this tic is taken into account when rerouting towards the next waypoint. Movement should now be smooth in all situations (barring unavoidable rounding errors). I also cleaned up the polyobject waypoint code in general.
Based on !938 (merged), so look at that one first.