Fix server freeze on client absence.

The server has no concept of clients disconnecting due to networking faults or purposely pulling their internet connection. The current behavior is the server freezes forever waiting for the missing clients to respond until the game timeouts.

This is incredibly frustrating for free-for-all and to an extent, larger team games. More often than not players wish to continue. This fixes the bug by recognizing that clients aren't communicating and eventually drops them so the game can continue.

First the server responds to say it's still alive and waiting, then after a while it shows who isn't responding. Finally after 2 minutes it drops the players. I recommend at least 1.5 minutes before dropping players as often a router can be restarted within a minute and in the original games often found you'd missed the 60 second deadline only by a few seconds.

This is an important fix as the majority of games going down on hetzner, etc. are because of this.
Using an Action as if it were an enum makes this code (or at least its naming) much less clearer than it could be.  I suggest either renaming this and the functions below to match what they actually do (`tickAction`, `CheckForTimeouts`, `DropTimedOutClients`, etc), or make this a proper enum and then have a switch case in `Tick`.