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.
So to be clear, what this change does is:

* Introduce a kubelet specific data type internally called Pod that is namespace (based on source) and uniquely named (by the config itself)
* Where possible it attempts to reuse Manifest.ID OR uniquely identify the incoming item with a name.
* Set the stage for etcd a future change to make namespacing from etcd (across multiple apiservers) possible (which requires more changes to Manifest or the introduction of an object on top)

I'm working on the assumption though that we *want* Manifest.ID to go away (as per the previous discussion) and that the replacement must be a wrapper object around a manifest that is a kubelet public API type (pkg/kubelete/type.go#Pod?)