Qt somehow handles scrolling on new messages on its own when the
ListView direction is bottom to top.
In normal top to bottom, manual scrolling is completly buggy.
- Fix roomList height again, now based on model.count().
All delegates are assumed to be the same height
- Properly update room list when a room is joined or left
- Catch exceptions happening in threads (futures), which previously
passed silently
- Show "Empty room?" as "<i>Empty Room</i>" + gray [?] avatar
To make the models update correctly in QML:
- ListModel and _QtModel merged
- Return a ListModelMap QObject from properties instead of
a DefaultDict → QVariantMap