Refactor kubelet, standalone k8s and integration test to all use the same code.

Large re-factor, unifies stand-alone k8s, kubelet and integration testing code paths.
I think I'm OK with whatever it takes to get a clean interface. If I have to, I can live with deferring that work to the future as long as comments make it clear how we expect it to evolve.