- never broadcast when a player joins a game (unless it's a new game)
- removed a duplicate broadcast in this situation as well
- never broadcast when a player leaves a game (unless the game no longer exists)
- never broadcast when a game's options change (unless the state of it having or having not a password changes)
- DO broadcast when a game resets to the lobby state (we were broadcasting when a game started but not when it ended)
In an effort to reduce deadlocks, do not actually hold a lock over the list of players in a game and instead make a copy into an array for looping, in several locations.