Add join room page
This also moves the logic for joining a room in a singleton because it is now used in two places and it was easier to keep a global state.
Edited by Carl Schwan
This also moves the logic for joining a room in a singleton because it is now used in two places and it was easier to keep a global state.