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

Adds more support for enter/exit/dock logic.
Fixes #4640 - Units teleport into transports.
This seems a bit convoluted.  You should be able to move the `IMove` initialization into the constructor, and the other checks can go into `State.Approaching` (it pays to recheck for target validity whenever the activity is in a safe state to abort, as it will change if the target is killed).