Checkpoint commit to represent dir entries in a struct.

The current issue is that the top 2 bits of each byte in the struct seem
to be missing when I read data, i.e. we get 0x2c instead of 0x4c.
Return 0 for unset directory entries.
Fix reported size of root directory entries, everything working again.
Log all directory entries when changed.