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.
When reading from a memory map, tell the OS the size of the block so it is faulted with a single low-level read.
Make "big" merges in LSM much less common.
Mark memory maps for sequential access during LSM merges.
Read from the checkpoint when creating Bloom filters for unmerged chunks.  Otherwise we do unnecessary additional I/O (outside the memory-mapped region that other threads are using).
Add a forceful discard step to LSM chunks after they are checkpointed, do that work in thread rather than tying up the eviction thread.