RefundsUnits trait to generalize SupplyTruck + AcceptsSupplies.

~~[previous bad impl]~~

**New implementation:**

No `Cargo` abuse this time.
Works the same as capturing per @pchote's suggestion.

~~[Failing](https://github.com/OpenRA/OpenRA/pull/5925#issuecomment-52877026) for the time being.~~
Interesting find actually. I do not explicitly call `.Kill()` any where which means this should not be triggered. I use `Enter` then `DonateSupplies`.

`DonateSupplies` calls `self.Destroy();`

I did not even think to test `EjectOnDeath` with this trait refactor so this entire logic block may be unnecessary.