Don't hold the checkpoint lock when flushing leaf pages during close or
in preparation for a checkpoint; reference #1114.

Add a new spinlock, WT_BTREE.flush_lock, that is acquired whenever the
leaf pages are written.

Change checkpoint to write leaf pages before acquiring the schema lock
(this is done by first using the schema lock to get a list of URIs that
we're going to checkpoint, then releasing the schema lock and flushing
those URI's leaf pages, then reaquiring the schema lock for the rest of
the checkpoint).

Change handle close to write leaf pages before acquiring the "close"
lock that blocks checkpoint.

Change the checkpoint API call to set the WT_SESSION_NO_CACHE_CHECK
flag, so the checkpoint thread isn't highjacked to do forced eviction.
Merge branch 'develop' into relax-checkpoint-lock
Remove uses of the checkpoint lock other than serializing checkpoints:
compact holds the schema lock, so it doesn't need to hold the checkpoint
lock, the new WT_BTREE handle close lock prevents checkpoints from
colliding with handle close, so LSM doesn't need the checkpoint lock
either.

Minor cleanup, bug fixing, code shuffling.
I believe the read-write-modify cycle of the metadata when we create a
checkpoint is always done under the schema lock; add an assert, I think
it's dangerous if that's not true.
Remove extra brackets from WT_WITH_DHANDLE op.
Merge pull request #1136 from wiredtiger/relax-checkpoint-lock

Don't hold the checkpoint lock when flushing leaf pages