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.
The big difference is that the client reads the response after write and tools helper prevents it in code.  What's the disadvantage of having registry expose the read/written/merged write?