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

Adds more support for enter/exit/dock logic.
Fixes #4640 - Units teleport into transports.
`inner == this` is used as a sentinel value for calling `InsideTick(self)` instead of `Util.RunActivity(self, inner)`.