Lots of battle-related functions

Can battle (still only picking random moves for now), but does not
entirely represent the state of the battle as an object yet. Concurrency
works fine. Still a few tweaks for weird errors in battles to be fixed
(i.e. when it loses a 'mon to a momentum attack).