Factor unit_move_data construction from unit_move()
Also have to move out side effect of unit_data() that it actually does the move. Even when we want to collect the data earlier, we don't want unit location to be changed at the same time.
This turned out to be much more involved change than I expected. At this point it seems clear that it's better to live with the bug in S3_0 than to introduce this change with all the risks of introducing a lot of new bugs.
Likely it's easier to fix #45876 first, and then this, than the other way around.
To be able to resolve things like https://www.hostedredmine.com/issues/736060 we need to be able to construct the unit_move_data before calling unit_move(). First step is to refactor it out from unit_move() to a separate function. Targeting to S3_0 because dependency to fixing bug mentioned earlier.