Added IDisabledTrait & UpgradeManagedTrait

 * IDisabledTrait for identifying (and filtering) disabled traits
 * UpgradeEnabledDisabledTrait provides an abstract base for enabling by upgrade and disabling by upgrade
This comes across as a bit of a half-hearted change.  How about we rename this to `CanGrantLevel` (avoiding the need for extra parameters) instead?