Cleanup: Remove obsolete code
Reimplement attack in Game.attack() with PROPOSED_ATTACKER/PROPOSED_DEFENDER

This implements the following tags:
 - PROPOSED_ATTACKER
 - PROPOSED_DEFENDER
 - ATTACKING
 - DEFENDING
 - SHOULDEXITCOMBAT

This shuffles the ATTACK event to be a "confirmed" attack, and the
BEFORE_ATTACK event to be a "proposed" attack.
Because of that, Vaporize is moved to the ATTACK event.

More information on combat here:
  https://github.com/jleclanche/fireplace/wiki/Combat