Overhaul of BattleUnit move handling

This splits off much of the move execution logic into dedicated methods,
which allows move actions to be executed at any time, even outside of
the normal CTB turn cycle. As counterattacking was already handled very
similarly to normal move usage, this helps readability a lot.