Add proper client initialization

Fixes following issues:
- Client not sending TOSERVER_RECEIVED_MEDIA if it doesn't have all media right from start
- Joining player standing in world long before player can move
- Data sent to clients prior clients are ready to receive

Additional improvements
- max receive buffer is now set to IPv6 minimum UDP size of 1500 bytes (only buffer not packet size)
- conlock is split to multiple small locks
- remove lots of duplicated code in server.cpp

Design decisions
- client list handling moved from server to separate class
- Added remote client state
- Player initialization data isn't sent uppon reception of INIT2 but after TOSERVER_RECEIVED_MEDIA (this will result in old clients failing to join on login without having completed download of all media in a previous session. Is this a big problem?)