Once we find an update object we can use, remember it and pass it into
the underlying key/value return function.  This is the change to fix
issue #1062, where we find a visible update and act on that, but the
update becomes invisible and we eventually drop core.
When returning from WT_CURSOR.update, we previously called __wt_kv_return
to point the cursor at internal copies of the data.  That no longer works
because we don't have a reference to the correct WT_UPDATE structure in
that code (and it's unclear to me how to get a reference to the correct
WT_UPDATE structure).  As a workaround, ensure the cursor has a local copy
of the key/value pair.  This is probably wrong, I'm expecting to revisit
this change once I have a better understanding of issue #1070.
Use self.reopen_conn() instead of rolling our own.
Confirm WT_CURSOR.next_random works for both in-memory and on-disk
formats.
Change WT_CURSOR.next-random to handle insert lists where the updates
aren't visible to the running thread; admittedly an edge case, but it
seems best if cursor calls don't return references to updates that may
subsequently disappear.

This change should close issue #1064.
update a comment.
Fixes for WT_INSERT objects with invisible WT_UPDATE objects.  For
row-store types, it means there's no exact match because row-store page
objects cannot have the same key as a WT_INSERT object.  For
column-store types, column-store page object keys can be identical to
WT_INSERT object keys, use the returned slot to figure it out.

Simplify the test for empty pages, we can test for both empty and
"beyond the end" in one test.

Reorder the search-near code, check for a valid key/value pair returned
from the search function before checking for implicitly created rows.
Add a slightly different test, where there are visible records in the
insert list as well as in the on-page records.
Flip the sense of the __cursor_invalid function to __cursor_valid
(thinking not-not-valid was making my head hurt).

Rewrite the cursor search operation to look like search-near, where
we test for a match first, rather than last.

Rewrite the cursor random-next operation to look like search-near,
just for consistency.
Add a comment.
Merge pull request #1071 from wiredtiger/invisible-updates

Invisible update changes.