Better errors

* Support for automatically serializing as JSON on publish
* Error messages when attempting to publish bad values
* Protocol errors now generate an Error object with the protocol error as the message.
* `Message` now supports `timedout` member
* Moved from simple-mocha to mocha-cli