MUC management implementation

This is a PR to keep track of the work on #283, *it shouldn't be merged just yet*.

At this stage, it defines the API to query joined rooms (and list their occupants and topic), join/leave rooms and get/set the topic for a room.

I'd love some feedback on the architecture so far before I flesh it out further.
room_object should not be necessary, assume duck typing here (the backend is supposed to give you a room object with all those methods in it)