Better publish support

* Support automatically serializing objects that aren’t strings or
Buffers.
* Better errors when trying to publish null, undefined, empty string or
empty lists as messages.
Better errors around Message timeouts

* Keep track of when a message times out
* Throw an error after timeout when calling `finish`, `requeue` or
`touch`
* Moved where the error gets thrown for already responded for better
stack traces.
* Don’t automatically requeue messages at hard timeout.
Add should in package.json
Replace simple-mocha with mocha-cli
Make Travis happy

* Actually remove simple-mocha from package.json
* Just use should for integration tests.
Downgrade nsqd version for integration tests

* Add support at the wire level for sending msg_timeout supported in
nsqd version 0.2.28+
Travis NodeJS version issue work around
Remove throwing an error if timed out
Fix protocol error messages
Merge pull request #27 from dudleycarr/better-errors

Better errors