use MagicAbilityList instead of Set<MagicAbility> to handle abilities with implementation
MagicWhenDiesTrigger to extend MagicWhenOtherDiesTrigger instead of MagicWhenPutIntoGraveyardTrigger so it can be used in MagicPermanent.addAbility