Refactor significant chunk of Battle

There is a new class, called BattleController, that will mediate
communication between client and battle. This BattleController will
later do validation of moves and switches.