Don't hold the checkpoint lock when flushing leaf pages

@agorrod, @michaelcahill, an attempt to avoid holding the checkpoint lock until after flushing the leaf pages.

It's only lightly tested, but so far seems to work.

I have a couple of open questions I'll comment on in the code.

Anyway, if you get a chance, please let me know what you think and if this approach seems good to you.

Reference #1114.
I believe we've always held the schema lock around compact.

The intent of this code is to make sure there is no LRU eviction happening in the file during compaction.