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.