Callback URL may not be parsed correctly by the regex
The regex that is used to match /connect/:provider/callback doesn't seem to be handling some (but not all) Google accounts.

Here are a couple of different redirects issued by Google:

1. This works

```
http://example.com/connect/google/callback?state=e16a8...&code=4%2FzAHfquZ....
```

2. This does not work.

```
http://example.com/connect/google/callback?state=e16a8...&code=4/zAHfquZ....
```

The difference is that in the first case, the slash is encoded as %2F and it matches the regex defined.

From lib/handler/koa-2.js
```js
var regex = new RegExp([
    '^',
    app.config.defaults.prefix.replace(/\//g, '\/'),
    /\/([^\\/]+?)/.source, // /:provider
    /(?:\/([^\\/]+?))?/.source, // /:override?
    /\/?(?:\?([^/]+))?$/.source, // querystring
  ].join(''))
```

According to the implementation of the URL class in JavaScript it seems that everything after the question mark should be part of the querystring. Perhaps the regex above needs a fix?

