“err” missing in custom callback arguments
When `authenticate` is called with a custom callback to override default behavior, the callback expects the four arguments  `err`, `user`, `info` and `status`. 

In [v2.x/lib/framework/koa.js#L95](https://github.com/rkusa/koa-passport/blob/v2.x/lib/framework/koa.js#L95) the `err` argument is missing where the original callback is called.

``` javascript
    const _callback = callback
    callback = function(err, user, info, status) {
      if (err) {
        callback.reject(err)
      } else {
        Promise.resolve(_callback(user, info, status)) // should be (err, user, info, status)
               .then(() => callback.resolve(false))
               .catch(err => callback.reject(err))
      }
    }
```

Just to keep the usage of custom callbacks consistent with how it is described in the official [Passport docs](http://passportjs.org/docs/authenticate#custom-callback).

And just a question on the side: Why isn’t it `callback.resolve(…` instead of `Promise.resolve`? `reject` and `resolve` are both assigned on [line 131–134](https://github.com/rkusa/koa-passport/blob/v2.x/lib/framework/koa.js#L131-L134).
