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
fix a comment
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
Get the eviction lock before finding a slot for forced evction.
Don't attempt to allocate an empty array of forced eviction candidates: we assert that we won't do that.
Add a test case for statistics logging.
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.