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.

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.

@kellyredding - Ready for review.
@jcredding we discussed making this method signature match the error handler constructor signature.