My concern is that there was a specific reason for `HasTrait<Mobile>` vs `HasTrait<HiddenUnderFog>` (which would be the sensible thing here).
If this is just to invalidate attacks against HiddenUnderFog we can move it into TargetableUnit so it works everywhere.