Add pagination module

This handles the conversion between page/per_page parameters that the
API accepts in the query string. The return value is an object with a
skip and limit property, this can be fed directly to mongodb or used
with elasticsearch's from/size parameters (which are functionally
equivalent to mongo's skip/limit).

This will be used to provide pagination in the API for lists of results
and search results.
Paginate search results for /:collection

This uses the paginate module to provide mongo with skip and limit
parameters to control which records are returned.
Use paginate module in elasticsearch plugin

Rather than duplicate the logic in the pagination we just call out to it
and convert the mongo names (skip/limit) to the elasticsearch names
(from/size).