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
I think this is a great idea, but it's a shame that it's only available to upgradeable traits (note: i'm not asking you to change anything wrt this now).

We have discussed in the past introducing a base `Trait` type that we can use to add type restrictions to `.Trait<>` and friends.  If that ever happens, then we can move this up a level and have it available for all traits.