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.
It is idempotent once all of the "read" sources have been read at least once (which is a flaw in the current kubelet that is not addressed in this pull).  That could be fixed by breaking the sync loop up by namespace (which is possible now) and then removing containers after a period.  Tim and I discussed snapshotting the state to allow volumes to be properly deregistered (some concept of before and after), which would also fix the restart read race on sources.