Make canAfford a CombatUnit method.

I claim the client does not need to call this. Tell me if you disagree.
(Well, the player should be able to tell what made an ability unusable.
But we can figure out a signaling mechanism for that.)
Split CombatAbilities off from Abilities.

Clean up surrounding code and fix tests