Change OAuthScopes into an interface as opposed to boilerplating annotations

Particularly in google storage, incorrect `@OAuthScopes` annotations were pasted in a lot of places, guaranteed via also pasting them in tests. This change avoids copy/paste issues, as the current clouds we support have a rather simple set of rules. For example, the following sets up google compute for almost all api usage:

```java
      bind(OAuthScopes.class).toInstance(ReadOrWriteScopes.create(
            "https://www.googleapis.com/auth/compute.readonly",
            "https://www.googleapis.com/auth/compute"
      ));
```

Details:

 * Change OAuthScopes into an interface as opposed to boilerplating annotations
 * Fixed errors because of boilerplating annotations.
[minor] I'm OK with the cast, but no way to easily fix this with generics?