If you're going to take in `opts`, then why not let user shoot themselves in the foot and let them have `itemsPerPage` equal 55? Why over-ride that option if you're going to expose it?

I think this could be a lot simpler if there were just `opts`, straight up, assigned to this (and other) options.

```js
if (opts) {
    this.showAll = opts.showAll !== undefined ? opts.showAll : false;
    this.itemsPerPage = opts.itemsPerPage || 10;
    this.pagesToShow = opts.pagesToShow || 5;
    //...
}
```

If this were done this way, you could probably replace `[MIN|MAX|ITEMS]_PER_PAGE` with some values that come in only if it's not defined in `opts`.