Added tab completion to in-game and lobby chat.

 - Both player names and chat commands can be completed.
 - Names of local players and bots are not candidates for completion.
 - If a completed name is the first word ": " is appended to the end.
 - The hotkey for toggling team/all chat has been moved to left Alt.
Style nit: we usually use an explicit `foreach` loop these cases to make it clearer that it is manipulating external state.