Rewrite the summon/play player/card chain

- Player.play(card) now plays a card from the Player's hand.
- Player.summon(card) plays an arbitrary card for the Player
- Card.play() is a helper for Player.play(card)
- Card.summon() handles the class-specific card summoning logic
- Card.activate() will trigger the activate script from the card data
- Entity.buff() now summon()s an Enchantment
- Hero Powers are now properly "played" through activate() and summoned
  through play() or summon()