Use map instead of slice for directory checksums
Implement DirectoryManifest
Reorganize public/private