Modifies IMove & Enter and Fixes #4640 - Units teleport into transports

Adds more support for enter/exit/dock logic.
Fixes #4640 - Units teleport into transports.
Enter `Tick(self)` with `nextState == State.Entering && inner == null`.
goto case State.Entering
`move.MoveIntoTarget(self, target)` returns `null`.
goto case State.Approaching
`move.CanEnterTargetNow(self, target) && Accept(self)` is `true`.
goto case State.Entering
`move.MoveIntoTarget(self, target)` returns `null`.
Now it is considered able to enter, but `move.MoveIntoTarget(self, target)` fails to return an activity.

Basically, it is a guard against a pathological case.