Improves tab completion in chat.

Pressing tab after completion now cycles to the next candidate.

Moves the completion code in LobbyLogic and InGameChatLogic to a common class.
You may want to include a `.Distinct()` to filter out duplicated bot names.