Handle authentication failure due to email change or Github nickname

change. Fixes #173

- Right now, if a user changes his email or Github nickname, he can't login.
- This PR tries to fix that issue by finding the user by email if it
  can't find it by nickname
- If a user has changed its nickname, then email will be used to find
  the user
- If a user has changed its email, nickname will be used to find the
  user
- If a user had changed both, the email and nickname, then a new user
  will be created
- Added uniqueness validation on user's github nickname so that
  database level uniqueness constraint will not throw the exception