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.
The problem I think here is that go util.Forever is complicating the idiomatic way of avoiding shared state, i.e. this construct (which also prevents you from creating unnecessary stateful members):

    func Stuff() {
      // shared state, no locks needed
      for {
        // any reactions to changes
        select {
        // bunch of conditions
        }
      }
    }

Doesn't work quite right.  Probably should just switch this to a HandleCrash().