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
Defining this as `UpgradeMaxLevel + 1` may cause some maintainability issues.  How much trouble would it be to change the things that use this to treat it as the maximum enabled level instead of the first disabled level?