Replace SDLNet code with system sockets

Hollinski and I have discussed these matters, and we've found that SDLNet isn't really fit for use, as we need more control and options for the sockets.
Is it right to do this here? Previously `Server` was responsible for maintaining the socket set because it'd be wrong for clients to know about each other. However, the client's socket is owned by the client and should not be public. Closing the socket should be handled by the client.

You will still have to purge `Diconnected` clients here of course.