Implemented Archmage

This is the first implementation of “spell damage” concept.  Currently,
spell damage is stored as a BoardState attribute.  This means that all
spell cards that deal damage must use the takeDamage function with
isSpellDamage argument set to true.