Initial reconciliation loop.

Determines the set of active volumes versus the set of valid volumes
defined by the manifests. If there is an active volume that is not
defined in any of the manifests, deletes and cleans up that volume.
Splits volume interface into Builders and Cleaners

Different information is needed to perform setup versus teardown. It
makes sense to separate these two interfaces since when we call teardown
from the reconciliation loop, we cannot rely on having the
information provided by the api definition of the volume.
Modifies directory walker to use a regex

Now a regex is used to determine active volume properties from
their directory paths.
Modifies tests to use new volume objects.
Reorganization; Directory traversal less ugly

Directory traversal is no longer recursive and only goes as deep as it
needs to. Moved GetActiveVolumes to volume packages and added a simple
test.
Merge pull request #688 from Sarsate/volume-cleanup-loop

Volume reconciliation loop