Moves processing logic

![dumb_dog](https://cloud.githubusercontent.com/assets/527874/3298502/507be156-f602-11e3-8f9a-d7cc0ed735f3.gif)

This PR moves the processing logic out of the publisher and into a separate class.

The processor can then optionally be injected into the publisher, allowing different consumers to process the msg in different ways, or the default way provided by the publisher.