WIP: Better errors

* Support for automatically serializing as JSON on publish
* Error messages when attempting to publish bad values
* Error messages when attempting to `finish`, `touch`, `requeue` if the message has timed out. 
I've modified this to only keep track of the timeout, not actually throw an error if there's a message operation on timeout. Someone now easily has the means to track down a worker that's taking too long.