entity/player: Fix possible case where the reading goroutine doesn't close
entity/player: Move packet writing into its own goroutine
/: Move chat onto its own goroutine