Refactor login logic to the login widget.

**DO NOT MERGE**

A little work needs to be done yet.
> Since moving them to the backend would mean to remove that object

In my view, this is the process to move to the backend:
1. you move a copy of the same object to the backend
2. you write dispatchers for read/writes, in the backend, to update the status.
3. you convert the frontend object to a proxy in the frontend (you can write generic descriptors that will do the zmq call, and return results and/or execute callbacks)