Dirty disable

Michael, I'm creating a pull request to make it easy to look at this change. 

I'll also annotate a few places in the diff so it's easier to understand.

I believe this branch fixes the problems described in #419, but at the cost of losing much of the power of two-pass checkpoints (it prevents eviction of any page with any modification structure associated with it during the internal-page phase of the checkpoint).

I'm still trying to think of a better fix, but I've got nothing so far.