If the file is being checkpointed, the checkpoint's reconciliation of
an internal page might race with us as we evict a child in the page's
subtree.

One half of that test is in the reconciliation code: the checkpoint thread
waits for eviction-locked pages to settle before determining their status.
The other half of the test is in eviction: after acquiring the exclusive
eviction lock on a page, confirm no page in the page's stack of pages
from the root is being reconciled in a checkpoint.  This ensures we
either see the checkpoint-walk state in eviction, or the reconciliation
of the internal page sees our exclusive lock on the child page and waits
until we're finished evicting the child page (or give up if eviction
isn't possible).

Reference #419.
Change reconciliation to yield immediately after determining the state of a
child page in diagnostic runs, and to save the previous state of the page in
the WT_RECONCILE structure.  This is what I've been using to debug #419.