Widgets would sometimes briefly re-appear after having been deleted.
This was because of the following race:
* User presses delete, send POST req, we set `deleting`. Widget hides.
* POST request completes, we unset `deleting` so widget unhides.
* State event comes down sync so widget hides again.
This fixes this by introducing `waitForRoomWidget` and using it to
wait until the state event comes down the sync until clearing the
`deleting` flag.
Since we now have `waitForRoomWidget`, this also uses it when adding
a widget so the 'widget saved' appears at the same time the widget
does.
* ScalarMessaging onMessage was getting the current room ID by listening
for view_and remembering the room id or alias, and so having to look up
the alias if it was alias. We have RoomViewStore for this.
* Move waitForUserWidget into WidgetUtils
* s/require/import/