imported patch multiple-eviction-threads
Replace the WT_PAGE's WT_REF pointer with a uint32_t hint of the slot
offset.

now.
Merge branch 'develop' into new-split
Merge branch 'develop' into new-split
Add a new level of indirection on internal pages so there's a way to
split them by atomically replacing the WT_REF array with a new one.
Add pu_xxx_field #defines for the rest of the page-union fields.
Merge branch 'develop' into new-split
sort flat initialization
simplify an error message.
whitespace
These aren't XXX comments, they're not to be "fixed", at least for now.
Replace eviction code to deepen the tree using split-merge pages with
page-split code.  The split-merge code still mostly exists, but it's no
longer being used.  This set of changes mostly works, but there's an
overflow problem I've introduced somewhere that test/format shows, but
I can't reproduce in my test program.

Add a new WT_REF state WT_REF_SPLIT, which notifies threads they need
to restart their operation.

Rework WT_INTL_FOREACH so it doesn't require the additional WT_REF **;
trust the compiler to compress out the additional test.
Add a verbose "split" keyword.
Cast the argument to free, in case the pointer has any special qualifiers
(like volatile).
It's dangerous to reach down into the WT_PAGE_INDEX structure (and doing
so repeatedly will race).  Clean up that code, and create some structure
to avoid potential races.  I didn't obscure the field names, but that's
probably the next step, the first time we debug a race.
XXXKEITH: make sure I find this code again.
Merge branch 'develop' into new-split
Merge branch 'develop' into new-split
Merge branch 'develop' into new-split
Don't use "mod" for the parent's modify structure, it's too confusing.