Improve handling of room topic change (and associated minor refactoring)

Previously room topic change wouldn't trigger a refresh in the lobby.  It does now.

* Refactored and made the code that updates the lobby work in more situations (for example, when a room is closed it was not triggering an update).
* Pulled out the (faulty) background colour animation on lobby room update and replaced it with a css animation.
* Ran the topic change through the same code path.

This fixes #971.