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.
Are manifests the objects that should be in the etcd model?   My read was they shouldn't - it should be a Pod, whether it's apiserver or simpler.  In that case the scheduled pod would have ID and at a minimum the namespace of the apiserver that spawned it.  I did not make that step, I just made all of the config types *except* etcd not need manifest.id at all.  Now, if we want to preserve manifest id going forward, it may make more sense to treat it as an optional field and let consumers use it to disambiguate their lists of manifests.  But still feels like those should be more "pod" like (have a name and namespace).