Specify the login system design in more detail

Login flow:
-------------

1. Cleanup the flow and add more details.
2. Separate the Proof of Work logic (nonce) from the key generation. Now there are two separate proof of work difficulties, one for login, and one for account creation (we may want account creation to be a lot more costly than login).
3. Session management