Fix false sharing found by Sasha: threads were updating *different* txn_state objects allocated within the same cache line.
Have pages point at their spinlock rather than keep an index into an array.  Also allocate a contiguous block of locks rather than adding an extra indirection.
Once we enter an LSM tree, we are "busy" for the purposes of cache full checks.
Avoid reading a page that is being evicted when walking with WT_WALK_CACHE set.
Improve condition wait fast paths using atomic compare-and-swaps.
Further refine condition variables: keep a count of waiters (or -1 for a signalled condvar with no waiters).
Remove trailing whitespace after the timestamp.
Switch back to storing an index into the array of page locks rather than a direct pointer.

Backs out part of 64f087c3ab98f48924d03de0f532ef723b6430ce.
Add error checking to calls to __wt_cache_full_check.
Merge branch 'develop' into fine-grained-durability

Conflicts:
	src/include/flags.h