Re: the idea of defaults/overrides for all, Lodash has a nice bit of functionality for this: 
http://lodash.com/docs#defaults

For example:
```
var myDefaults = {
   itemsPerPage: 10,
   maxItems: 20
};
this.settings = _.defaults({ itemsPerPage: 3 }, myDefaults);
```
That's a lot simpler than defining a bunch of ternary conditions for each property (it does change the API for the object though, from this.itemsPerPage -> this.settings.itemsPerPage). 

So that's one approach. But in reality this change isn't really needed because of the way that all the settings are public. If I want to change itemsPerPage, I can just do that on the object passed back from createInstance:
```
$scope.pager = PageTracking.createInstance();
$scope.pager.itemsPerPage = 3;
```

Now, while we can do it this way, I'm open to arguments about how it really should be done. Our usual pattern is to pass in an options object, so there is benefit in changing this over. If we do want to, I say we go with the lodash method. 

re: Min/Max per page... I see where they are in the code, but I'm not really sure what they're actually used for. This is some ~~ugly~~ beautifully-challenged code we've pulled in and is need of cleanup. So I wouldn't worry about checking min/max right now, especially since the value can be overwritten anyway.