split TcpStream into read and write halves, so it's possible to recv and send concurrently implement 'player nickname' command