Create invitations table in db

* required string token
* required bool indicating whether token is used or not, default false

[#14]
Add Invitation model

* generates random token before it saves

[#14]
Implement SignIn model

* It needs an omniauth auth hash and an invitation token
* It has a simple public interface: #user
* First it attemps to look up the user using the auth hash. If that
  fails, it verifies that an unused invitation exists with the provided
  token. If that succeeds, then a user is created with the provided auth
  hash.

[#14]
Add methods to User model

* These are needed satisfy the API expected by the SignIn model

[#14]
Nitpick URI consistency

* Yes, I have a problem.

[#14]
Persist given invitation token through flash

* Adds helper method to get the invitation token, first from the params
  and then from the flash

[#14]
Refactor authentication design to use invitations :)

* Now new users must provide a valid, unused invitation token in order
  to have their account created in Snapme. Ballin'

[#14]