Fix a leak of the buffer used to hold config files.
Speed up checkpoints by doing a better job of skipping pages that can't contain changes that need to be included.

Before the checkpoint pass, we have written every dirty leaf page at read-committed isolation.  So the only pages that checkpoint has to write are internal pages, or leaf pages that were dirtied after the "write leaves" phase but before the checkpoint transaction started.  Now that we separate out the allocation of a transaction ID from setting up a snapshot, we can distinguish between update transactions and the transaction we're using for the checkpoint.

refs #954, #963, #1001