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.
this is a subtype of an existing resource, but regardless I agree the annotation is wrong. So many of these are wrong we need to completely clean this api. You noticing this in passing supports that this api hasn't really been thought through.