Fixes crates getting collected by buildings or other crates

Long overdue fix for a regression I introduced.

Closes #5953. (Or should, it is very hard to test that specific case.)

Based on code from #6159.
(Tested NRE crash case reported in #6159. Buildings no longer collect crates dropped on them.)
For this to work properly the check will need to be done in the actor query:

```csharp
		public void OnLanded()
		{
			var landedOn = self.World.ActorMap.GetUnitsAt(self.Location).FirstOrDefault(a =>
			{
				// Can't crush ourselves!
				if (a == self)
					return false;

				// Mobile is (currently) the only trait that implements crushing of other actors
				var mi = a.Info.Traits.GetOrDefault<MobileInfo>();
				if (mi == null)
					return false;

				// Make sure that the actor can collect crates
				return CrushableBy(mi.Crushes, a.Owner);
			});

			if (landedOn != null)
				OnCrush(landedOn);
			else
				self.Destroy();
		}
```