Added IDisabledTrait & UpgradableTrait with upgrade levels support

 * IDisabledTrait for identifying (and filtering) disabled traits
 * UpgradeEnabledDisabledTrait provides an abstract base for enabling by upgrade and disabling by upgrade
The default `UpgradeMaxAcceptedLevel = 1` blocks a second iron curtain from being able to recharge the remaining time.  I think `1` is the best default for this, but that does mean that we will need to override it here. Setting `UpgradeMaxAcceptedLevel: 2` on one of these three traits is sufficient to fix the issue.