Add SpellCategory class

Also separate Spell into Spell and MageSpell for clarity (hopefully)