SERVER-14800 Replace some masserts with invariant calls in locking
SERVER-14788 Do not start threads in ReplicationExecutor's constructor.

By not starting threads in the ReplicationExecutor constructor, we can safely construct
it when constructing the ReplicationCoordinatorImpl that owns it, which allows us to
get rid of the weird behavior where we pass a NetworkInterface* to startReplication(),
and further allows us to clean up the concurrency rules for startReplication().
SERVER-14788 Make ReplicationCoordinatorImpl::startReplication threadsafe.

To follow the contract described in the header, it shouldn't be mutating pointers
to its top coord and repl executor, or changing its RID, so do that in the constructor,
instead.  This makes the parameters to startReplication sane, as a side benefit.
Merge remote-tracking branch 'upstream/master'