Improve client connection handling.

Use a single list and actually remove clients correctly once they
disconnect from either server.
Add DATA handling and add support for all files done.

Technically, this server will satisfy PSO's requirement for a
patch server. However the next step will be to actually implement
sending patch data since it doesn't really do that yet.