Improved TcpServer implementation
Now uses a single map instead of a bunch of vectors to store the sockets
Note that every new client has a unique ID, which is never reused
Fixed problem with TcpServer not handling disconnects when no data is received
Added a configurable idle client timeout
Client class now handles server disconnects
Improved/fixed some other stuff