Messaging caller specified object mapper

Open up the ```PublisherService``` for caller specified message serializer. The purpose of doing this is that
the caller may have custom written serialization modules/configurations added to some object mapper (ex: the DropWizard framework provide such a configured object mapper) and the caller may  want to use when publishing messages.

Changes:
* Rename the old ```MessageSerializer``` to ```DefaultMessageSerializer```
 as it only consist of defaults in terms of serialization
 configuration. 
* Add interface ```MessageSerializer``` which specify the contract
  for the caller to obey when implementing custom message serializers.
* Update publisher service test.
* Cleanup of ```PublisherService``` 
* Bump version to 1.0.22 as this break backward compatibility due to change of ```MessageSerializer``` from class to inteface.

Ping @xiaodong-izettle or @oskarwiksten