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.
Right now, there is no difference between an "orphaned" volume and a volume we are supposed to kill. The lines below just kill individual containers that are not in any manifest and the volume loop takes the same approach. Even when we explicitly delete a pod, that just removes the manifest from the desired state and I don't think there is ever an explicit trigger to "kill this pod". In this sense, every volume that needs to be deleted lacks a corresponding manifest definition and is "orphaned".