Don’t cancel MoveAdjacentTo / MoveWithinRange when target becomes invalid

The old "move within range" logic used by the attack code cached the target position at the time the order was issued, which caused units to move to the wrong cell if the target moves, but also meant that the units would continue moving to the target's position if the target is killed.

The rewrite in #5617 fixed units pathing to the wrong cell, but introduced a regression (#5968) where units would stop moving if the target is destroyed.

This fixes that regression by switching the target to a static cell if the original target becomes invalid.