separate Client and Publisher interfaces
This breaks up the Client into separate Client and Publisher interfaces, rather than having it wrap Subscriber and PubSub interfaces. This removes a layer to the interface, making the code cleaner and simpler, and the interfaces more straightforward. It also removes some code and documentation duplication.
closes #6 (closed)
don't squash, review commits independently
Edited by Jameson Rollins