SERVER-15833 Require basic compatibility between old and new configs for force reconfig.

Force reconfig is really about letting changing topology when the primary is not
available. It is not intended to allow you to make the cluster inconsistent by
marking non-index building nodes as index-building, or arbiters as non-arbiters,
e.g.
SERVER-15832 Prevent primary from stepping down while holding global lock.

Specifically, this prevents it from occuring during reconfig, either heartbeat
or command-initiated.
SERVER-15779 Clear drain mode flag when switching out of primary state.

Also, maintain the global lock held in multiApply while calling applyOpsToOplog.
Putting applyOpsToOplog outsite that critical section allows a race in which a
node might exit drain mode due to step-down and then be reelected primary, leading
to risky behavior.
SERVER-15836 Clean up several rollback js tests.
SERVER-15836 Add TODO and improve messaging in ReplSetTest.initiate().
SERVER-13962 import snappy-1.1.2 (commit 1ff9be9b8fafc8528ca9e055646f5932aa5db9c4) into src/third_party
SERVER-15541 Remove PlanYieldPolicy::yield() unused default arg
SERVER-15262 Do not reuse write units of work
SERVER-15262 Remove syncDataAndTruncateJournal from the public interface
SERVER-13962 add generated snappy-stubs-public.h and SCons configuration (including C API) for snappy-1.1.2
SERVER-15527 change default explain verbosity on the server to allPlansExecution
SERVER-13635 Clean up KVCatalog ident generation

No longer includes index name since that was running in to file path limits.
Also now checks that the selection of _rand won't collide with any existing
idents.
Merge branch 'master' into wt_merge