Add username field to User

* Authentication can now be done with e-mail or username
* User has to agree to Terms of Service before sign up

Closes #8
Closes #9
Closes #10