Add code to help reproduce/debug an assertion in LSM.

Related to issue #1047.
This branch is not destined to be merged back in to develop.
Hack around a WT_DEADLOCK in wtperf on this branch.
Add in a work around for the transaction visibility check in LSM.

The code uses the greater of the last update txn id or the chunk
max id for the visibility check.

This fixes my test case, but I suspect it's avoiding the issue, rather
than fixing it. (i.e hopefully we don't need to apply as many updates
to chunks, rather than having to wait longer to checkpoint).
Support snapshots in LSM via update checks, rather than actual updates.

The current code actually inserts updates into old chunks, in order to
check for conflicts with snapshot transactions. It's enough to check for
conflicts without doing updates, and that saves some mess with tracking
when it's OK to checkpoint non-primary chunks.
Remove retry on EBUSY return from a checkpoint in LSM code.

The retry was added as a work around for #973. We hope that #1057 has
fixed the underlying issue.
Fix Python test runner so it can deal with builds in different locations.

Used to only handle builds in build_posix.
Reorder Python test suite build directory test.

Also remove stray debug print statement from previous commit.
Have wtperf close the connection before running compact.  This should not be necessary: compacting an LSM tree should cause the current in-memory chunk to be written to disk first.
Don't rely on LSM merge threads updating a counter periodically to tell if compact is done: have the LSM merge threads clear the compacting flag when they all go to sleep.
Make lint happy, enumerate all of the cases.
Replace an assert with a comment, the assert isn't all the useful any more.
Fix a couple of comments: the search functions no longer return write
generation information, and the WT_CURSOR_BTREE.tmp buffer is no longer
used for row-search anything.
Simplify the cursor-invalid code.  This shouldn't be a functionality
change, but it consolidates the tests for a "valid" page slot.  I
can't figure out why the tests were split into two parts (one set
done search didn't return an insert object , and the other done if
search returned an insert object but didn't find a visible update,
or search didn't return an insert object.  The test combination may
not be necessary, but it's not going to cost anything and should be
more resiliant to changes in the search routines.   Reference #1062.
The reason we were seeing leaf pages during our review/cleanup of the
newly created child pages was because the for loop was wrong, it should
have been "i = pindex->entries - SPLIT_CORRECT_2", that is, we should
ignore the first and last entries in the new parent page.  Remove any
adjustment of the for loop and process all of the parent page entries,
it's no slower and will avoid bugs if we ever change our policy on what
pages are left untouched in the parent.

Reference 63dd6b2.
Don't clean up on SIGINT, just leave things as they are.
Flush all LSM chunks before compacting.
When compacting, consider merging more chunks together than normal (still bound by the chunk_max setting).
Don't close the connection before compacting: compact now makes sure that all chunks are flushed.
Set split_pct by default in wtperf: we use a 4KB allocation size and a 4KB leaf page size, the default setting wastes 25+% of every page.
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.