[[ Bug 12647 ]] lock moves failed to synchronize movements

Multiple moves created whist `lock moves` was in effect failed to be synchronized. 

Previously when the movements were locked, every time `MCUIDC::handlemoves()` was called it would shift the start time of each movement forwards by an amount equal to the interval between the current and previous call.  This meant that the movements were essentially paused for the duration of the `lock moves`, but if there were multiple movements created during the lock any time difference between them would be preserved.  This becomes noticeable if there are a large number of movements created, or if, say, a 10 millisecond wait is added between two movements.

The solution here is to store the time that the lock was initiated, only apply the offset when the lock is released and, for movements created during a lock, use the start time of the current lock as the start time of the movement.