So far this can login and logout for normal (password-based) login flows. The access token is stored in a keychain.
After login/starting the client, rooms are loaded and (for now) printed to the terminal.
While implementing it i realized that we probably also want to support encrypted rooms, and I'm not going to implement that (again