socket watching, with same interface as http polling

This refactors and extends socket and polling code in both the wrapper and the browser to support sockets with a similar interface as polling.

The browser now has `watch_room_socket(self, room_id, on_activity)` and `watch_room_http(self, room_id, on_activity, interval)` methods, each of which calls `on_activiy` whenever it gets new activity data from the server.

The wrapper now has `watchRoom(self, room_id, on_event, interval)` and `watchRoomSocket(self, room_id, on_event)`, which call `on_event` with the data of any events they see in the activity data which are related to the specified room.

The improved live tests have passed [this Travis build](https://travis-ci.org/jeremybanks/ChatExchange/builds/23993055).