Start tuning the WT_SESSION_IMPL cache of WT_EXT and WT_SIZE structures.

Increase the pre-alloc of WT_EXT/WT_SIZE structures from 5/2 to 5/5 in
the write/free paths, and from 100/10 to 250/250 in the checkpoint path.

Turn off cache limits: checkpoints can take tens of thousands of WT_EXT
structures and hundreds of WT_SIZE structures, we want to cache
everything until the checkpoint completes.  Add a cleanup call after the
checkpoint so we don't tie down megabytes of memory between checkpoints.

Split the previous pre-allocate function into two parts, it's simpler
as a function to pre-allocate entries and a separate function to take
an entry for use.

Remove the tracking of "memory allocations while locked"; there are
extent lists we read while not holding any locks, and they can be
really, really large requiring the allocation of tens of thousands of
WT_EXT structures, they make the statistic meaningless.
LSM optimizations:

1. improve merge algorithm, particularly when there are multiple merge threads;
2. get incrementally more aggressive about merging, rather than all or nothing;
3. avoid the checkpoint lock in common LSM paths.
Go back to holding the checkpoint lock when flushing in-memory LSM chunks.  Otherwise, we can race with application checkpoints in test/format.

refs #769
Merge pull request #768 from wiredtiger/session-ext

Start tuning the WT_SESSION_IMPL cache of WT_EXT and WT_SIZE structures.
Merge pull request #769 from wiredtiger/lsm-opt

LSM optimizations
Fix a GCC (un)signed warning:
lsm/lsm_worker.c:129:3: error: conversion to 'u_int' from 'int' may change the sign of the result
Another GCC (un)signed warning:
lsm/lsm_worker.c:109:25: error: conversion to 'u_int' from 'int' may change the sign of the result