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.
I would inherit from Identifier so if you want to send a message to a room you just use it directly