Refactor PublisherService to supply messageType in post instead of ctor

* Update `PublisherService` so that the message subject is supplied in each call to `post` instead of being part of the ctor.
* Add interface `MessagePublisher` for publishing a message with subject.
* MessageSerializer can now serialize different types of messages, not only one type.