Break up API client into per-resource client and common code

Refactor client code into per-resource client objects and a common client core. The purpose of this is to allow future composition of clients that access both Kubernetes resources as well as plugin custom resources.
I suppose I can see a case for that separation. I would prefer to see this client get a different name, rather than the existing client..