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.
Somewhere in this file or the etcd file, can you add:

// TODO(lavalamp): Use the etcd watcher from the tools package, and make sure all test cases here are tested there.

My goal is to have one universal watch implementation that tests all relevant things. Will make it easier to plug in another storage solution, should that ever be necessary.