Compaction can't run at the same time as checkpoint.

Michael here's two minor fixes to compaction.

First, I don't believe there's anything that would stop a checkpoint from reconciling a page at the same time compaction is reading the reconciliation information for the page, and that's going to lead to a core dump.   Maybe I'm missing something, though.

Second, compaction should visit all of the pages in the cache, both leaf and internal.

I also updated the statistics to count compaction, and test/format now calls compaction once per thread.