Add `Job`, handles converting to/from payloads

This adds a `Job` class that handles converting a name and params
to and from a payload hash. This will be built when adding a job to
a queue and will be used to parse a payload pulled out of redis.
The `Job` instance is passed down to the handler for use in
handling the background job. A `Job` also includes a `created_at`
that references the time it was added to a queue. This can be
used to detect when an action occurred as opposed to when the
background worker decided to finally handle the job.
Merge pull request #30 from redding/jcr-job

Add `Job`, handles converting to/from payloads
Update `ErrorHandler`, match Sanford error handler

This updates the `ErrorHandler` to behave similar to Sanford's
error handler. It takes an exception, a daemon data and an
optional job. This is because the error handler is called if any
exception occurs while handling a payload and a job may not have
been parsed when the exception occurs. The daemon data's error
procs are called and passed the exception, daemon data and job.
If an error proc raises an exception, the new exception will be
passed to any subsequent error procs and the last exception that
is thrown will be logged by the daemon. This is to avoid any
errors being "hidden" and behaves the same as a bunch of nested
begin-rescue-end statements.
Add `PayloadHandler`, processes a serialized payload

This adds a `PayloadHandler` which handles all the logic for
processing a serialized payload. When run, it parses the serialized
payload, builds a job, finds a route for the job and then runs
the route. The `PayloadHandler` also handles logging, catching
errors and timing how long it took to run the job. When an error
occurs, the exception, daemon data and the job are passed to an
error handler which is run. This allows users to report errors or
do other special behavior if needed.

This also includes the logic for running a route which will build
and run a `QsRunner`. The `Route` was implemented before the
runners so this was left as a todo.

Finally, this also includes a `Payload` module that handles
encoding and decoding a payload. Qs uses `Oj` to convert a payload
into and out of JSON.