Split the schema lock into a lock that prevents concurrent schema-changing operations (create, drop, rename, etc.), and a separate lock that protects the shared handle list.  The main goal in the short term is to ensure that checkpoints don't hold any locks that block cursor opens while doing I/O.
Add a lock around table operations, so that cursor opens don't see tables half created or half dropped.
Merge branch 'develop' into checkpoint-concurrentcy
Implement @agorrod's review comments.
Drop the handle lock while waiting for the eviction server to clear walks.  Otherwise we can livelock.
Fix use of the table lock, which prevents tables from being opened when partially created.
Finish checkpoint locking: gather data handles in the first pass, then walk the list in subsequent passes to apply the checkpoint.
whitespace
KNF
Fix a comment.
Move a comment from the function header to the code that implements it.
whitespace
Unlock both the schema and the handle list locks when closing and LSM tree.

refs #1385
Fix a copy/paste bug.
If an LSM merge fails, check for non-NULL URIs before dropping.
Implement @keithbostic's review comments.
Another change suggested by @keithbostic: we don't need a separate "busy" flag for handles in a checkpoint.
Fix an increment that got lost in the previous change.
Merge pull request #1380 from wiredtiger/checkpoint-concurrentcy

Reduce the impact of checkpoints on cursor operations