Fix a handle locking bug if exclusive access to a handle is required and the handle has to be opened.
Check for incomplete tables consistently.
Fix up a few minor places where we can simplify "ret = XXX" code, no
real changes.
Back out that last change -- we always branch to err, we're done in the
function.
Add truncation tests for row-store objects, and complex tables by URI.
fix comment typo
Add WT_CURSOR_BTREE.row_iteration_slot and change the row-store cursor
prev/next code to use it instead of modifying WT_CURSOR_BTREE.slot.
Change the session.truncation implementation from a simple loop around
the a pair of cursors in the session layer (which implies sequential,
repeated access to all of the files making up the table), to a loop that
steps through the table's files deleting the range from each of the
files.  This is only the first part of the change: the column group code
is written and tested; the index code is written but not yet tested, and
there's no support yet for deleting entire pages that aren't currently
in cache without reading them in.  Issue #247.

Change __wt_unknown_object_type to be more general, and rename to
__wt_bad_object_type  -- if the argument type is a standard one, report
the API got an unexpected object type, else report a "bad" object type.
Use the wt list command to confirm all of the files were copied when
backing up a database.
Add a bunch of indexes to the complexPopulate function.
Change __curtable_open_indices to call __wt_schema_open_index without
checking ctable->table->idx_complete (this is the only code in the
cursor layer that looks inside ctable->table, and there's little or no
cost in calling the underlying function all the time).
We have to do a search before we do our first index remove, there's no
reason to believe the user did a search, they may have just set the key
and then called truncate.

There's no need to perform the cursor equality test before the remove,
do it afterward and remove the temporary variable.

Remove copy_start/copy_stop, they're a left-over from when I was
duplicating the cursor.
Re-write __wt_schema_open_index to only parse the schema file entries
that match the specified "index:<tablename:" prefix.
Deal with new / dropped indices in __wt_schema_open_index.
closes #266
Fix a couple of comments.
Do the WT_REF.state change (from WT_REF_DISK to WT_REF_READING) in the
read function, instead of asserting in that function the change was done.
whitespace
Next set of changes for #247, fast-path session.truncate.  The focus of this
set of changes is to remove the need for a full search of the key during the
truncation, that is, instead of doing search/remove/next triplets for each
row, do remove/next couplets.

Change btree cursor next/prev functions to optionally initialize the
page's modification information and copy the page's write generation
before moving through the page.  We have to do this, otherwise the write
generation changes underneath us every time we remove a row.

Implement btree cursor equality function, which requires we maintain
both the WT_CURSOR_BTREE.row_iteration_slot and WT_CURSOR_BTREE.slot.
Inside cursor next/prev functions, whenever we move to a new slot,
update the cursor's slot field.

Fix bugs in __cur_var_append_next/prev where the internal btree cursor
recno wasn't being updated, only the interface cursor's recno changed;
add a new inline function __cursor_set_recno() that updates both to make
this easier to get right in the future.

Add a bunch of new truncate tests to the test suite.

Add cursor duplication tests for column-store objects.
Put tests that only need to run once in a separate class without
scenarios, so they only run once.
Merge pull request #268 from wiredtiger/truncate

Next set of changes to fast-path session.truncate.