Preliminary token revocation support

Hi

I've started testing `pyramid-oauthlib` and would like to use it in a project. I have interest in supporting token revocation and have managed to get it roughly working with the given changes. I'd be interested in knowing your plans on how to properly implement it and would be happy to work on this part.

One issue I noticed is that the `RevocationEndPoint.create_revocation_response` builds the request object itself and passes that to the `RequestValidator.validate_revocation_request` method. This breaks the promise that the request parameters passed to the custom validator would be `pyramid.request.Request` instead of `oauthlib.common.Request`.

Looking forward to your comments.
I don't think the revocation handler has to know about response types. It needs to validate the revocation request (the base class implementation of `oauth2.RevocationEndpoint.validate_revocation_request` should handle that).

What's confusing is that I the revocation endpoint is the only endpoint that needs to know about the `RequestValidator` directly. The rest of the endpoints all delegate to token, response, and grant types, which may use the validator. These built in handlers all take a `request_validator` keyword to their constructor.

Since pyramid-oauthlib creates exactly one `Server` instance when it's included and cannot know what implementation of `RequestValidator` is needed, what do you think of  a directive like `config.set_request_validator()`. You must call it before you register any of the handlers and whatever you pass will be given implicitly as an extra keyword argument to all of their constructors.

```python
config.set_request_validator('my.validator')
config.add_grant_type('oauthlib.oauth2.ResourceOwnerPasswordCredentialsGrant', 'password')
```

It means that, while the OAuthLib servers are usually configured to have one class be both a grant type and response type handler, we would actually probably instantiate the grant type twice (once in each role). I don't *think* that's a problem.