Add support for GitHub

If you merge this pull request, gate will be able to authenticate users also with GitHub OAuth.

In this pull request, I did the things below:

* Made authentication logic abstract
* Added GitHub support based on the abstraction above
* Adopted an authentication strategy based on GitHub organization
* Made some trivial modification onto config file (eg. changed the key name `domain` to `restrictions`, etc)