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

Adds more support for enter/exit/dock logic.
Fixes #4640 - Units teleport into transports.
The switch statement is for finding and switching to the next state, which continues running using the code above on subsequent calls to `Tick(self)`.