Chef broker: remove extraneous 'chef-client'

The install.erb for teh Chef broker had an extraneous 'chef-client' in
it. That has been removed.

Change suggested by Nick Douma

Fixes https://tickets.puppetlabs.com/browse/RAZOR-209
Documentation and sample hooks

This outlines the expected behavior of hooks.

For https://tickets.puppetlabs.com/browse/RAZOR-368
Add hooks as first-class objects

Hooks are a way to augment Razor with functionality when certain events occur.
Most/all hooks will involve node events, e.g. binding to a policy.

When a hook runs, it receives (as JSON) some metadata about the node and the
hook. When the hook finishes running, it can do several things:
- Exit with various status codes; 0 means success, any other means failure.
This will be recorded temporarily in the hook and permanently in the generated
event.
- Write to stdout; This can be either JSON or any string. If the string is
not JSON, it will be included in the generated event. If it is JSON, the
'hook' key can update the configuration of the hook; the 'node' key can
update the metadata of the node; the 'error' key holds any error(s) generated
by the hook; and the 'output' key holds any extra messages to include in the
generated event.

A generated event will be created whenever a hook's event script finishes
running.

Fixes https://tickets.puppetlabs.com/browse/RAZOR-368
Add `create-hook` and `delete-hook` commands

This adds methods for instantiating and deleting the configuration for a hook.

Fixes https://tickets.puppetlabs.com/browse/RAZOR-368
Triggering hooks for certain events

This adds hooks for node-unbound-from-policy, node-bound-to-policy,
node-deleted, node-booted, node-facts-changed, and
node-install-finished

Fixes https://tickets.puppetlabs.com/browse/RAZOR-369
Add `razor hooks` query

The user needs to see which hooks have been instantiated in the application.
This new command will return that list and display the configuration for
each.

Fixes https://tickets.puppetlabs.com/browse/RAZOR-368
View log for hook

`/api/collections/hooks/$name/log` will now yield all events for that particular hook.

For https://tickets.puppetlabs.com/browse/RAZOR-368
Spec tests for `razor events`

This adds tests for the `razor events` query.

For https://tickets.puppetlabs.com/browse/RAZOR-382
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 20.
- `start` determines what row number to start with, which defaults to 0.

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

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