Merge pull request #708 from godarklight/allow-quit-during-sync

If the connection dies during a sync, allow the user to escape it
Simplified message handling.
Change ping so it doesn't have a timeout and you can send more than 1.
Don't write a send/receive error over another disconnect message.
Delay starting the map until receiving a MOTD, this means you won't quickly connect and disconnect if the username is taken.
Protect UDP messages from null bytes.
Use a warp average variable to avoid "Collection was modified" exception
Protect handshake from byte[0] and null.
Update client receive timestamp on tcp receive too.