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.
Merge pull request #25 from sarenji/refactor

Refactor significant chunk of Battle