Note: this is a significant update after v0.6.0 with some breaking changes.
* serialization and publishing are separated
* callback parameters (`original_message`, `deserialized_message`, `serialized_message`) are renamed for uniformity.
* handler now returns a dict or nothing. `HandlingResult` is removed. Publisher doesn't handle presence of multiple messages in the result like it did before
* `run_for_result` added
* any stage (e.g. handler) can be written as a function now
* rewritten documentation