First, we can now see "removed" overflow records during reconciliation,
and, second, we may have to copy a removed overflow record across a page
eviction, if there's an older, reading transaction.

Simplify page update save/restore by always writing the original on-page
value, if any, plus the update list, which should mean any saved/restored
page will correctly match the evicted page's state as of the time of the
eviction.

See issue #911 for discussion.
Fix a comment, we no longer disable eviction for a subtree during
checkpoint's internal pass, it's disabled entirely.
KNF
Don't split pages during either pass of checkpoint because the act of
splitting pages into the parent creates pages with no address, and
checkpoint of the internal page requires leaf pages to have addresses
(with the single exception of "deleted then re-instantated pages).
Merge branch 'new-split' into new-split-overflow
Merge branch 'new-split-overflow' into new-split-ckpt-1
Fix a comment, we no longer have "split" pages in the tree.
Minor code shuffle, don't free the multiblock structure while our caller
might reasonably still be using it.
Merge branch 'new-split' into new-split-overflow
Merge branch 'new-split-overflow' into new-split-ckpt-1
Put blank lines between comment paragraphs.
Merge branch 'new-split-overflow' into new-split-ckpt-1
Revert the changes to date: we're going with a simpler solution.
During the final phase of checkpoint, visit all pages: otherwise, we could split a leaf page without writing it, then fail to write the internal node.

refs #913
Merge pull request #914 from wiredtiger/new-split-ckpt-1

checkpoint can race with splits
Add a line to put the backup into place as the run directory.
Minor comment cleanup, rewrite the loops so there's only a single call to
the underlying function (I suspect the old code was a left-over from when
we had to be writing a node behind the current walk point, and that's no
longer the case).
Checkpoints (well, writing the root page), require passing a list of
current checkpoints down to the reconciliation of the root page, and
we use WT_BTREE.ckpt for that purpose.   Assert that is never happening
in more than a single thread.
In diagnostic mode, assert instead of doing the panic, it makes it easier
to figure out what thread went wrong.
Try to fix the two problems with the original overflow work in the
new-split code (#1: removed overflow objects don't stay in the cache
past their useful life, so they may not exist in the cache when we try
and get them, #2: we don't want to write overflow objects that aren't
useful to any possible reader anyway).

The plan is to write the WT_CELL_VALUE_OVFL_RM cells into the page's
disk image, and then when the page is re-instantiated in memory, it's
checked for those cells.  If we find those cells, eviction fixes up the
references by copying removed overflow objects from the original page's
reconciliation cache into the newly instantiated page's reconciliation
cache if they exist, and ignoring them if they don't (if they don't
exist, no possible reader can care).