Decoupled replicated log coordinator logic and made it asynchronous.

This is the first patch of a series of patches that implement a
catch-up mechanism for replicated log. See the following ticket for
more details: https://issues.apache.org/jira/browse/MESOS-736.

Here is a brief summary of this patch: (Sorry for the fact that we are
not able to break it into smaller patches :().

1) Pulled the original Coordinator logic out and divides it into
several Paxos phases (see src/log/consensus.hpp). Instead of using a
blocking semantics, we implemented all the logics asynchronously.

2) In order to ensure the liveness of a catch-uper, we implemented a
retry logic by bumping the proposal number. This also requires us to
slightly change the existing replica protocol.

3) Made the "fill" operation independent of the underlying
replica. Instead, introduced a catchup (see src/log/catchup.hpp)
function to make sure the underlying local replica has learned each
write.

4) Modified the log tests to adapt to the new semantics (see (3)
above).

This is a joint work with Yan Xu.

From: Jie Yu <yujie.jay@gmail.com>
Review: https://reviews.apache.org/r/14631
Libprocessify the coordinator.

From: Jie Yu <yujie.jay@gmail.com>
Review: https://reviews.apache.org/r/14902
Added log recovery support.

From: Jie Yu <yujie.jay@gmail.com>
Review: https://reviews.apache.org/r/15802
Refactored log tools and added a tool to initialize the log.

Also pulled storage related code out (I haven't changed them) from
replica.cpp.

From: Jie Yu <yujie.jay@gmail.com>
Review: https://reviews.apache.org/r/16433
Adjusted log tests to use the new log tool.

From: Jie Yu <yujie.jay@gmail.com>
Review: https://reviews.apache.org/r/16946
Added a watch function to watch for network size changes.

From: Jie Yu <yujie.jay@gmail.com>
Review: https://reviews.apache.org/r/16064
Only broadcast requests when there are enough replicas in the network.

From: Jie Yu <yujie.jay@gmail.com>
Review: https://reviews.apache.org/r/16065
Changed log recover implementation to only broadcast requests when
there are enough replicas in the network.

From: Jie Yu <yujie.jay@gmail.com>
Review: https://reviews.apache.org/r/16982
Added UNREACHABLE to stout.

Review: https://reviews.apache.org/r/16939
Used UNREACHABLE to silence a compiler warning.

Review: https://reviews.apache.org/r/16940