@defer & @stream experimental usage & docs
### Issue Description

When trying to follow the instructions for running `@defer` & `@stream` (as per https://github.com/apollographql/apollo-server/pull/6827), tried using both the graphql `17.0.0-alpha.2` & `17.0.0-alpha.1`, the server always return `Unknown directive \"@defer\".` as response.

I did also try `16.0.0-experimental-stream-defer.5`, in which case, it didn't throw the `Unknown directive \"@defer\".` error but instead just returned an empty result from the http server.

Using the `16.0.0-experimental-stream-defer.5` experimental version did allow me to get a response from the `executeOperation` api, even thought it did not conform to the specs documented in #6827 and returned a `body.singleResult` looking like
```
{
  next: [Function: next],
  return: [Function: return],
  throw: [Function: throw],
  errors: undefined,
  [Symbol(Symbol.asyncIterator)]: [Function: [Symbol.asyncIterator]]
}
```

I'd really like to have some more documentation on how to use these features.

### Link to Reproduction

https://github.com/Banou26/apollo-server-issue-7279

### Reproduction Steps

accessing [the sandbox](http://localhost:4000/graphql) and sending this request
```gql
  query GetBooks {
    books {
      title
      author
      ... @defer {
        test {
          foo
        }
      }
    }
  }
```
will result in a `Unknown directive \"@defer\".` error
