kubelet will log errors when the cloudprovider API is unavailable, but
will continue to persist node updates using last-known addresses.
Without this change, all nodes are marked as NotReady, and eventually
controller-manager evicts all pods.
The methods for registering a node and syncing node status to the apiserver
have grown large enough that it makes sense for them to live in a separate
place. This change adds a nodeManager to handle such interaction with the
apiserver.