Allow multiple instances of client

This is one take on how to allow multiple instances of a client (that don't share fixed global state like the config). Currently the unit tests are relying on more behavior than just their specific module; we'd need more mocks to simulate the way that a client is passed to the various classes (Adapter, Config, etc) on initialization.

You may have a better idea about how to accomplish this same effect -- if so, feel free to suggest an alternative!