Removed EffectSource and all associated methods.

Changed Cooldown to accept a StatType to get the Cooldown Reduction value from instead on a boolean flag to apply it or not, then having to work out the correct CDR value from EffectSource.
Simplified ValueFromAttackType to only accept foubles since nothing was passing it Value objects.
Added an AbilityType for the NotImplementedAbility!
Added a unit == null check for ValueFromAttackType.
Cosmetic buildspath change
Added this to because of a warning message.
Added a HasStack Interface that EffectContainer and Stack implement. Stack implements it so either an object with a stack or the stack it self can be used.
Modified ValuePer* Classes so the base is self-contained and must be passed a stack in the constructor but the ParentStack and Level subclasses retrieve it from the parent/unit after checking that they are the correct type (HasStack or Champion)
Removed the valuePerParentStack functionality from Ability since it was a bit of a hack to get an object to use its parent's stack.
Removed AddStack from the BaseObject Interface since it is now handled by the HasStack interface.
Clarified comments.