added a badly-needed Table of Contents (and see newly added script doc/make_toc.pl to automatically regenerate TOC any time)
"Update Modes of HashDBM:" added more info about UPDATE_APPENDING
"Multi-record Transaction:" clarified the text about rollback and ACID and added a link to the "broken" section
"Restoring Broken Databases:" clearly define the threats, how tzkrw addresses them, how to get guarantees
fixed a bunch of small spelling errors
THINGS TO CHECK
in "Restoring Broken Databases" under "HashDBM and TreeDBM" where I added a suggestion to set TuningParameters.align_pow to the disk block size when using UPDATE_APPENDING. That is because if TuningParameters.align_pow is 0, the end of the existing region might be on the same disk block as the start of the region for new records, and cause a problem with partial/corrupted writes on a power failure. And also, writing the last bucket value may be on the same disk block as the oldest existing records in the existing region. See what you think.
In "Restoring Broken Databases" under "HashDBM and TreeDBM"I suggest to call the Synchronize() method with hard==true; I am not sure what the benefit of hard==false would be since I guess it would not cover most types of OS or hardware crashes. But we could talk about both if you think it is useful.