Merge branches 'develop' and 'master' of github.com:wiredtiger/wiredtiger
Merge branch 'develop'
Merge branch 'develop'
Merge branch 'develop'
Merge branch 'develop'
Merge branch 'release-1.2'
Merge branch 'develop'
Note that bulk cursors don't support reset, and that matters to checkpoint.
Add a test that confirms empty checkpoints work, that is, we see empty
objects even after adding new data.
Fix a race when opening an LSM tree handle.

Also refactor __lsm_tree_create and __lsm_tree_open.
Implement auto-commit of transactions at the API.

This simplifies code that tried to get the effect of auto-commit internally.
closes #309, refs #310
Tweak page sizes in test/format for small caches.
Make sure at least 10 leaf pages fit in cache: anything smaller is really
pathological.
Fix the usage statement.
Output bulk operation count
Bulk-load is only possible if the we just created the file, which means
we have to allow an EINVAL return from a bulk-load cursor open, where
the object wasn't just created.
Fix up some naming inconsistencies, no real change.
Bulk-cursors no longer block checkpoints; if checkpoints can proceed in
parallel with a bulk load, we have to checkpoint bulk-load cursors, or
the database won't be consistent.  We can't write files that are being
bulk-loaded, so change checkpoint to create "fake" checkpoints that, if
accessed, look like empty files.

Changes along the way:

Add a "metadata" spinlock: used to single-thread checkpoints, bulk-load
cursors acquire it when they're calling checkpoint during close.

Change __wt_conn_btree_apply() to treat "exclusive" handles like any
other handle: for now, this means just bulk-load handles, but may, in
the future, include verify handles as well (probably not salvage or
upgrade, though).

Change __wt_meta_btree_apply() to not ignore EBUSY returns, instead, it
calls a new function, __wt_conn_btree_apply_single() that looks for the
handle matching the URI and calls the worker function for it.

Tighten down the requirements for bulk-load, the only thing that can be
bulk-loaded now is a newly created tree, not any empty file.  The reason
is because deleting a checkpoint requires writing the file, and a fake
checkpoint can't write the file.  So, if you have a named checkpoint in
the file, then, because tree is empty, you start bulk-loading it, then
you enter another checkpoint with the same name, you end up using a fake
checkpoint to delete a real checkpoint, and that's going to end in tears.

It's possible for a session handle to have an open, bulk-load cursor
(which is really just a long-running reconciliation), and reconcile
pages for other reasons, for example, call checkpoint.  This means we
have to have separate reconciliation information for bulk cursors and
the session handle, we can't just have one.  Change reconciliation to
pass around a reconciliation cookie instead of just using the one
attached to the session.

Fix a bug in __conn_btree_open(): if the open fails, clear the special
flags we've set in the handle, otherwise they don't get cleared.

Ref #321 (bulk-load blocks checkpoint).
Merge branch 'develop' into bulk-checkpoint
Clarify that only newly created objects may be bulk-loaded, empty
isn't enough.
Only rollback changes that were successfully installed.
refs #309