Add support for custom primary keys

This is probably seems like it's coming out of left field... We have integrated `rack-oauth2-server` into our API and the rest of our API uses `UUID` for `id` fields and we wanted to ensure consistency. Forking and modifying the codebase was the best option we could find (would have required too much monkey patching). 

The idea here is you can swap out `BSON::ObjectId` for a `UUID` like so:

```ruby
  # in configuration block
  oauth.pk_generator = Rack::OAuth2::UUIDGenerator
```

Let us know if this is something you are interested in and if there are changes/improvements we can make.