Add a UnitUpgradeManager trait.

This introduces support for timed upgrades, starting with crate buffs.
Fix cloak upgrade expiration.