Use config sources for Kubelet, switch to podFullName

As discussed in #297 and also a side discussion about abstracting the Kubelet from being directly dependent on etcd, start refactoring config service to decouple sources of config from sync loop and switch from Manifest.ID -> Pod Full Name in the Kubelet.

Simplifies the Kubelet Run() step by requiring configuration to be defined up front, and an update channel passed into the Kubelet.
> Is moving the Sync goroutines into podconfig what you mean by NewPodConfig? Technically Sync isn't part of the default PodConfig setup now, but I was planning on changing that.

Sounds like it would work for me.

I guess it depends on what direction you're understanding the code from. If you're debugging a particular object, it's frustrating and weird to have to go track down all the various places it's created to see how its goroutines are started. I can see how, if you're trying to understand the system as a whole from the top-down, it at first seems nice to have all the goroutines started in one place. But I think making starting them a responsibility of their object will ultimately make it easier to understand the objects, and by extension, combinations of those objects. Goroutines != threads.