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 tests now ensure they see the message with both polling and sockets, and these improved live tests have passed [this Travis build](https://travis-ci.org/jeremybanks/ChatExchange/builds/23993055).