Fix terminate() being called on kicking a player (closing sockets twice is bad)

Also, Boost, why does your is_open() suck..