I wasn't sure how you wanted to handle choosing a data store, so I changed the the third parameter in the main Client class constructor to choose json or wp (with a default of json). This kills the option for a user to use their own created datastore but it still made sense to me so you don't have to create another object from the JsonDataStore or WordpressDataStore class. I may not be thinking about the easy way to do that, so feel free to edit if you'd like to combine the best of both worlds.
I wasn't sure how you wanted to handle choosing a data store, so I changed the the third parameter in the main Client class constructor to choose json or wp (with a default of json). This kills the option for a user to use their own created datastore but it still made sense to me so you don't have to create another object from the JsonDataStore or WordpressDataStore class. I may not be thinking about the easy way to do that, so feel free to edit if you'd like to combine the best of both worlds.