Implement a Motion Manager around UnitMotion.
This new MotionManager handles movement for UnitMotion components (not UnitMotionFlying).
This is a first step towards unit pushing, by giving a central place for the relevant units to collide.
One important side-effect is that movement is effectively synchronous - the positions are not actually updated until all units have moved for a turn (refs rP24798).
As a side-effect, it's an optimisation: fewer messages are being sent overall, which leads to a slight speedup (negligible without a lot of units though).
This is a first step - ideally, the movement functions called from UnitMotionManager would actually be moved there.
Differential Revision: https://code.wildfiregames.com/D3509