Allow plugins to be called with an options object

This allows plugin calls to take place with an options object for configuration:

```js
Bookshelf.plugin(function (bookshelf, options) {}, options);
```

It also adds tests for the various methods of passing in a plugin.