Aligns to the latest GitHub scopes

Adds all the latest GitHub scopes defined in [1] with the ones included
in the GitHub plugin enums, including the associated documentation.

[1] https://developer.github.com/v3/oauth/

Change-Id: I0528074cac20ed8553ba7f2da07fc0196dcd3999
diff --git a/github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/OAuthProtocol.java b/github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/OAuthProtocol.java
index 70eb514..19479d7 100644
--- a/github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/OAuthProtocol.java
+++ b/github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/OAuthProtocol.java
@@ -42,18 +42,135 @@
 
 @Singleton
 public class OAuthProtocol {
+  /**
+   * Supported OAuth Scopes.
+   *
+   * OAuth authorization scopes as defined in GitHub API at:
+   * https://developer.github.com/v3/oauth/#scopes
+   */
   public static enum Scope {
+    /**
+     * Grants read-only access to public information (includes public user
+     * profile info, public repository info, and gists)
+     */
     DEFAULT(""),
+
+    /**
+     * Grants read/write access to profile info only. Note that this scope
+     * includes user:email and user:follow.
+     */
     USER("user"),
+
+    /**
+     * Grants read access to a user’s email addresses.
+     */
     USER_EMAIL("user:email"),
+
+    /**
+     * Grants access to follow or unfollow other users.
+     */
     USER_FOLLOW("user:follow"),
+
+    /**
+     * Grants read/write access to code, commit statuses, collaborators, and
+     * deployment statuses for public repositories and organizations. Also
+     * required for starring public repositories.
+     */
     PUBLIC_REPO("public_repo"),
+
+    /**
+     * Grants read/write access to code, commit statuses, collaborators, and
+     * deployment statuses for public and private repositories and
+     * organizations.
+     */
     REPO("repo"),
-    REPO_STATUS("repo_status"),
+
+    /**
+     * Grants access to deployment statuses for public and private repositories.
+     * This scope is only necessary to grant other users or services access to
+     * deployment statuses, without granting access to the code.
+     */
+    REPO_DEPLOYMENT("repo_deployment"),
+
+    /**
+     * Grants read/write access to public and private repository commit
+     * statuses. This scope is only necessary to grant other users or services
+     * access to private repository commit statuses without granting access to
+     * the code.
+     */
+    REPO_STATUS("repo:status"),
+
+    /**
+     * Grants access to delete admin-able repositories.
+     */
     DELETE_REPO("delete_repo"),
+
+    /**
+     * Grants read access to a user’s notifications. repo also provides this
+     * access.
+     */
     NOTIFICATIONS("notifications"),
+
+    /**
+     * Grants write access to gists.
+     */
     GIST("gist"),
-    READ_ORG("read:org");
+
+    /**
+     * Grants read and ping access to hooks in public or private repositories.
+     */
+    READ_REPO_HOOK("read:repo_hook"),
+
+    /**
+     * Grants read, write, and ping access to hooks in public or private
+     * repositories.
+     */
+    WRITE_REPO_HOOK("write:repo_hook"),
+
+    /**
+     * Grants read, write, ping, and delete access to hooks in public or private
+     * repositories.
+     */
+    ADMIN_REPO_HOOK("admin:repo_hook"),
+
+    /**
+     * Grants read, write, ping, and delete access to organization hooks. Note:
+     * OAuth tokens will only be able to perform these actions on organization
+     * hooks which were created by the OAuth application. Personal access tokens
+     * will only be able to perform these actions on organization hooks created
+     * by a user.
+     */
+    ADMIN_ORG_HOOK("admin:org_hook"),
+
+    /**
+     * Read-only access to organization, teams, and membership.
+     */
+    READ_ORG("read:org"),
+
+    /**
+     * Publicize and un-publicize organization membership.
+     */
+    WRITE_ORG("write:org"),
+
+    /**
+     * Fully manage organization, teams, and memberships.
+     */
+    ADMIN_ORG("admin:org"),
+
+    /**
+     * List and view details for public keys.
+     */
+    READ_PUBLIC_KEY("read:public_key"),
+
+    /**
+     * Create, list, and view details for public keys.
+     */
+    WRITE_PUBLIC_KEY("write:public_key"),
+
+    /**
+     * Fully manage public keys.
+     */
+    ADMIN_PUBLIC_KEY("admin:public_key");
 
     private final String value;