Made the client instance overridable.

I have made the client overridable so users can inject their own Guzzle instance. They also can access the current client instance with the getClient() method. I saw in the code that you've made some sort of base for the functionality and I build this PR on top of it.