Rework salvage merge: the big idea is we can't discard backing page or
overflow blocks from merge pages until after the merge phase.  The
problem is if we split a page chunk into multiple chunks, then discard
the chunk that "owns" the page because there's a better page that owns
the remaining name space, we'll free the backing blocks while there are
still other chunks that have to read that information during the merge
phase.

During overflow reconciliation, switch to listing overflow objects for
each chunk using a WT_TRACK reference, discarding the address structures
at that time.  This eats more space (a pointer per overflow item, per
page), but I don't see an alternative and it should speed up salvage.

Change format to always salvage the file that ends the run.
Switch the page's list of referenced overflow pages from a pointer to a
slot in the overflow array of pages.  It's more space efficient, but it
also allows us to discard a page's associated overflow pages when we
first realize a page isn't ever going to be used.
Quit trying to make the merge flags work: create a reference counted
shared structure describing the underlying physical page block and the
overflow records referenced by the page.  When we split a page into
multiple key spaces, increment the shared reference count.  When freeing
a key space, we know we can discard the underlying physical blocks when
the reference count goes to 0.
Tighten down the check for when we can delete overflow records, after
all of the merge chunks are gone, the overflow records can be discarded.
Trivial comment cleanup.
Fix a comment.
Merge branch 'develop' into salvage-merge-fixes
Merge pull request #1169 from wiredtiger/salvage-merge-fixes

Fix salvage merge
Fix cleanup of home directories for example code, and fix use of system without checking the return value (clang has a warning for that).