Flush LSM chunks before checkpointing: the checkpoint requires the schema lock (among others), and we want to hold that for as short a time as possible.
Add a condition variable to signal when LSM checkpoints should start, rather than sleeping for a fixed amount of time.  While in this code, cleanup places that set session->btree in order to make a function call.
Change LSM drops in the background to avoid blocking application threads.
Move the LSM "switch" operation into the worker thread.  This should both reduce contention for the schema lock and allow application threads to keep working until the new file is ready.
Use adaptive mutexes for spinlocks if available.
Merge branch 'basho' into lsm-ckpt-experiments
Merge branch 'basho' into lsm-ckpt-experiments

Conflicts:
	src/include/wiredtiger.in
Merge branch 'basho' into lsm-ckpt-experiments

Conflicts:
	src/btree/bt_evict.c
	src/conn/conn_dhandle.c
	src/cursor/cur_file.c
	src/include/btree.h
	src/lsm/lsm_cursor.c
	src/meta/meta_track.c
	src/schema/schema_plan.c
	src/txn/txn_ckpt.c
Merge branch 'basho' into lsm-ckpt-experiments

Conflicts:
	src/btree/bt_evict.c
Merge branch 'basho' into lsm-ckpt-experiments

Conflicts:
	src/btree/bt_evict.c
Move LSM switches back into application threads: the checkpoint thread can fall arbitrarily far behind.
Wait indefinitely in pthread_join: 60 seconds may not be long enough for some I/O-intensive operations like checkpoints to complete.
Delay inserts so that writing chunks to disk doesn't fall too far behind.
Make the LSM merge stall calculation match the new sleep time.
Preload the cache with internal pages from checkpoints.
Clean up a comment, don't bother clearing the key/value pair, it should
have already been done by our caller.
First set of changes to make WT_DATA_SOURCE work better (row-store is
working, but column-store still isn't).

Create a new cursor type, the data-source cursor; it has a "child" cursor
that's "owned" by the data-source layer.  This means adding a new private
field to the WT_CURSOR structure for a data-source.  Implementation is in
cursor/cur_ds.c.

Store the data-source configuration (currently only the key/value_format
strings) in the meta-data file.

Pass simplified configuration strings to the underlying data-source methods
("key_format", "value_format" and "append", so far, probably needs "overwrite"
as well).

Don't pass "owner" to the WT_DATA_SOURCE.open_cursor method, owner is
intended for some of the internal cursor types, like dump.

Some general renaming, use "uri" instead of "name" in the data-source
methods and docs.
Merge branch 'develop' into data-source
map both DB_NOTFOUND and DB_KEYEMPTY to WT_NOTFOUND.
Add support for "append", using DB.put DB_APPEND flag.

Remove unused #include files.