Fix a bug where the eviction server thread could get stuck if a tree is closed in between runs.

refs #1391
Revert part of the previous change: don't drop the handle list lock when scanning for pages.  We're only doing a trylock, so if we find some candidate pages, then fail to get the lock when we retry, we have wasted work.

refs #1391
Avoid stalls with LSM trees when the cache is full.

1. Don't block indefinitely on a full cache if we're holding the handle list lock.

2. If the cache is full and we're trying to discard chunks from an LSM tree, have the eviction server give up the data handle list lock so the discard doesn't stall.

refs #1391
Have the eviction server back off if it isn't making progress to give LSM a better chance to discard trees from cache.
LSM workers should try repeatedly to evict old chunks, otherwise they can fill the cache.

refs #1391
lint
Track data handles rather than btree handles.  This shouldn't be a real change, but tightens up some assertions.
Wait for the handle list lock when discarding in-memory chunks from an LSM tree.  This avoids a trylock that has to fight with eviction walks, so we will discard chunks more consistently.

refs #1391
Fix a race between creating and opening an LSM tree that gave an off-by-one reference count.
Move the test run into a subdirectory, WT_TEST.
Make it possible to pass additional information to the die functon's fprintf.
Don't assign uint32_t flags to an int.
Switch to holding the checkpoint lock when opening a bulk cursor.  This avoids a spurious EBUSY without adding more complexity to checkpoints.

refs #1397
Merge pull request #1399 from wiredtiger/bulk-checkpoint-lock

Switch to holding the checkpoint lock when opening a bulk cursor.
Revert to not holding the handle list lock when discarding LSM chunks: that does a lot of work inside a lock that blocks common operations.

refs #1391
Add tests for creating bulk and non-bulk items that we know will succeed;
I did this change to test for #1397, but it's a reasonable way to do more
testing in fops.
Don't divide by 0 if the file is 0 bytes.
No chunks exist before an item is inserted into the tree. Initialize the
data source statistics and then aggregate into those values in all
cases, instead of assigning the first chunk's statistics into the data
source statistics.
whitespace
Fix some issues with the recent changes to handle locking:

1) bump the reference count before dropping the handle list lock.  Otherwise, a handle sweep could free the handle from under us in between.

2) hold the handle exclusive until sweep is finished with it.  Previously it could have been re-acquired in between, and the locking situation was unclear.

refs #1391, #1392
Fix build warnings with diagnostic turned off.