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.
Fixed starport and palace
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.
Fixed SpriteRenderer offset bug.
Cursor Doubling

Cursor now doubles with pixel doubling, enabled by a new checkbox in the
settings menu.
Disable fontconfig under OSX. Fixes #4785.
Don’t clear shroud outside the map.  Fixes #6097.
Fixed invulnerable infantry

Closes #6263
Account for map edges in Shroud.IsExploredCore.
Don’t leak information about hidden actors.  Fixes #6125.
Visual fixes for TS structures and units.
Fix shroud hash updating.  Fixes #6308.

This ensures that multiple Invalidations() in one tick will each update the shroud rendering.
Fix a bad merge in UpgradeRules.cs
Merge pull request #6303 from obrakmann/fix6263

Fixed invulnerable infantry