Entities: Don't set the tile immediately in the constructor

Setting the tile normally requires access to the GameLogic to update
events happening on spawn (onEntityCross). However, most of the time
we don't have access, and don't need, GameLogic when spawning an entity
as we don't have the GameTile anyway. Instead, we force us to go through
moveToTile, where we actually pass the GameLogic and let spawn effects
happen. If we don't do that, we risk ending up in an incoherent/invalid
game state, where some effects wouldn't happen because we forgot to
trigger onEntityCross.
It is however now possible to pass null to moveToTile to not run
side effects on purpose, when we know for sure that no side effect
should be happening.