Volume reconciliation loop

Implements a reconciliation loop that tears down volumes that are no longer in use by any pod.

The set of valid volumes are determined by iterating through the list of manifests. The set of active, or mounted, volumes are determined by traversing the root working directory path for any existing volumes. These maps are compared, and if an active volume does not have a match, it is unmounted and removed.

This allows a kubelet to properly remove mounted volumes and clean up after itself in the event of a crash/restart.
If a container fails twice in short time period you are going to have an existing ".deleting~" file and then fail the second CleanUp, which causes the third SetUp to fail.  I'd expect this to be a not-totally uncommon case.  Imagine a container that crashes when it can't connect to some other service which is transiently down, but you want the container to be successfully restarted and running soon after that other service is fixed.

I'm not sure what happens in the rest of Kubelet when a volume Setup fails.   Does it periodically retry the starting the container?