Separate publisher and provider

This allows us to have multiple instances of a publisher that are all
belonging to the same provider. This is useful for things like holding
multiple connections or channels.
Update the KafkaProvider to conform to the Publisher interface
minor formatting
Merge pull request #7 from movableink/bm-ac/separate-publisher-and-provider

Separate publisher and provider