Delete Orphan folder when last file is deleted
Manage file rename and if the directory is not empty in TFS repository

(modifications are a little ugly, now :( )
Interface segregation.
Start DirectoryTidier.
Implement DirectoryTidier.
Use DirectoryTidier.
Revert some things.

One thing of note is that DirectoryTidier uses the LatestChangeset,
not the parent changeset. This is to try to ensure that directories
are never removed when there are any files in them, even if some other
changeset tries to sneak in new ones.
Remove some debugging leftovers.
Merge remote-tracking branch 'origin/master' into delete-orphans