Deal gracefully with disconnects
Better warnings and client deregistration
Add some disconnect handling

Still imperfect, a bunch of different client classes wind up as
stream_socket.peer and they don't share an interface.