implements init, restart, and snapshot from/to output db

This is approximately ready.  I still need to update all the cycamore modules - which will take a few days - before I can test that this code is even correct.  So consider this a pseudo-submitted PR.  I figured I'd get it out now so review can begin if anyone is interested.

I worked hard to have informative commit messages - some of them are several lines long.  They are a good overview of all the changes.

also fixes #750