Limit results from `razor events`

The list of events in `razor events` can grow unwieldy very quickly. This
change instates a default of all rows returned with options to return
different rows using parameters /api/collections/events:
- `limit` determines the maximum number of rows to return,
which defaults to all events.
- `start` determines what row number to start with, which defaults to 0.

This includes both of these parameters in `/api` under
`collections => events => params`.

Additionally, the collection will return an element `total`, which
tells the total number of rows that would have been returned without
the `limit` parameter supplied.

Fixes https://tickets.puppetlabs.com/browse/RAZOR-382
Limit events returned from `/api/collections/nodes/:name/log`

In addition to `/api/collections/events`, the view for the node's
log also needs to be filtered. This will allow the same parameters
('limit' and 'start') to be passed in order to filter the returned
collection.

The result from `/api/collections/nodes/:name` will have a key
for `params` which will indicate that `limit` and `start` are
both valid for the `log` collection.

Fixes https://tickets.puppetlabs.com/browse/RAZOR-368
Refactoring to generalize collection_view

Non-functional change making a helper method more
generic.

For https://tickets.puppetlabs.com/browse/RAZOR-382
Limit events returned from `/api/collections/hooks/:name/log`

Fixes https://tickets.puppetlabs.com/browse/RAZOR-368
Add explicit ordering to `/api/collections/nodes`

The previous query used implicit (non-reliable) ordering.
This will instead use 'name' so the result can be
deterministic.

For https://tickets.puppetlabs.com/browse/RAZOR-382
Limit nodes returned from `/api/collections/nodes`

Fixes https://tickets.puppetlabs.com/browse/RAZOR-368