Verify principal's e-mail address

Introduces token authentication (not to be confused with HTTP Token Auth.) and a mechanism to mark a Principal as having a valid e-mail address when they follow a link in their confirmation e-mail that contains their personalised token.

Things to consider:

* Language around the feature spec
* Using the presence of `last_sign_in_at` on the `Principal` model to indicate e-mail verification
* Request spec around some basic scenarios for authentication

@benlovell
Principal should be the return value from `authenticate` so this can go away.