Added tab completion to in-game 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.
Code cleanup based on code review.

Fixes multiple enumeration of IEnumerable.
Fixes return value of pure method not used.
Converted OnTabKey and OnClick handlers to method groups.
Removed one set of redundant parenthesis.
Replaced explicit type with var.
Added tab completion to lobby chat.

Also fixes accidental reversion of one word logic during cleanup.
Fields that could be readonly are now readonly.
Update AUTHORS

Added myself as requested by Mailaender.
Replaced ForEach with loop, moved Trim outside.
Replaced GetPlayerNames method with simpler linq.

Bonus feature: it now auto complete bot names as well.
Fixes double auto completion.

Pressing tab twice would auto complete (the same name) twice.
Auto completion is now disabled when last character in sentence is a
space.
Fixes double auto completion in in-game chat.
Changes how the playerNames collection is created.

It's now extracted from the orderManager, like it's done in LobbyLogic.
This is to increase consistency.
Merge pull request #6281 from mizipzor/tab-completion

Added tab completion to in-game and lobby chat.