Prep mainloop for incoming client connections.

This code mostly cleans up the mainloop for actually handling
incoming client connections.

We can't get creds unless the client actually sends some
data, so don't try to do this right after accept(), it
will just always fail. Instead, just wait for the client
to send some data, and then authenticate.

Lots of cleaning up lists when disconnects happen, we
need to remove the pollfd, accepting array and client
list structure properly.

This still doesn't handle disconnects properly, 1st client
dropping is OK, the second one ends up in the wrong code path
somehow (is shutdown() needed?). needs more work.

This code does already allow you to connect 250+ clients
(tested), so it's an improvement.
Check for recv == -1 as well.

Needed to catch some sort of hangup error (EPIPE?) from
clients leaving.