Recursive delete and test cleanup

deletePaths() and treeList() are two new methods added
to the Repository API. treeList() provides a recursive
listing (similar to ls -R) while deletePaths() uses
treeList() on the deletion target to find all files
which live under the path and need to be cleaned up.

At the same time, all the tests in the FS suites
have been reviewed. (Colin plans on looking at
DeleteServicesFilesTest so that's been omitted
from test-fs for the moment.)

With these changes the top-level "test-fs" target
should pass across the board. The only known failing
test is the assertRaises in repository.py for
deleting of directories.