Rework roomlist & space drawer state management
Bugs like !1650 (merged) and !1646 (merged) are too easy to get with the current implementation. We need a way of implementing this in a robust way in the RoomHandler and then have the SpaceDrawer + RoomListPage + RoomPage/SpaceHomePage show that as declaratively as possible, to prevent us from having to add really specific fixes in QML for edge-cases.
Some ideas:
- Have a "stack" for the current and previous room(s); this could simplify some of the room switching / leaving logic
- Do the same for the selected space
- Abstract over actual spaces and "fake spaces" (DMs, rooms without spaces) in the backend so that QML doesn't have to care about that
- Do the last-space loading in the RoomManager and ensure that it's compatible with the last room
- Store last room per space