Abilites can now have different ranks (defined in the XML) with variable parameters (cost, range, aoe) for each rank.
Separate rank-specific parameter values in the XML with '/'s and all the values will be saved in the ability when it is created/learned. When each parameter is accessed, the one specific to the abilities current rank is returned.
The LearnAbility function can now take a rank to learn the ability at, and will rank-up an ability instead of learning it if said ability is already learned by the unit.