Fix validators, and ability effect validation

- Effects now have getAbilityUnusable, returns bool or string
- CombatAbilities now inherit and can have specified an effect
validator, which lets you do things like bypass silence
The Battle can now check if an ability is usable, with effects
The Battle can now get the cost of an ability, with effects