BattleRoom refactor to support tournaments better

Generalized the BattleRoom constructor function (and the functions that
call it) to pass an arbitrary `options` object instead of a boolean for
`rated` only.

Added support to the BattleRoom constructor to let it process tournaments
properly. Now, instead of having the tournament forcefully override the
BattleRoom.win function, the BattleRoom itself can handle the callback for
when a tournament participant wins the battle.

Added a check for tournament battles to prevent users who aren't part of
that specific tournament battle from entering the battle.