Moved GroupProcess into group.hpp and made it a public member of
Group for testing.

From: Jiang Yan Xu <yan@jxu.me>
Review: https://reviews.apache.org/r/15221
Added local timeout so that Group operations fail after
we locally determine that the session is timed out.

From: Jiang Yan Xu <yan@jxu.me>
Review: https://reviews.apache.org/r/15016
Fixed a bug where Group::cancel can return a failed future
if the membership is already cancelled.

The API stipulates that a successful Future<bool> but with 'false'
value should be returned.

This can happen when:
1) The cancel() operation is queued up due to connectivity issue but
then invoked again by sync() the membership could be gone.
2) Even if not delayed, in cancel() we first checked whether the
membership exists in our local cache but the membership could have
expired by then (or when we invoke zk->remove(...)) but we have yet to
receive the update for it.

From: Jiang Yan Xu <yan@jxu.me>
Review: https://reviews.apache.org/r/15487
Added Zookeeper leader contender and detector abstractions.

From: Jiang Yan Xu <yan@jxu.me>
Review: https://reviews.apache.org/r/13086
Increased the minimum number of threads that libprocess statically
allocates.

From: Jiang Yan Xu <yan@jxu.me>
Review: https://reviews.apache.org/r/15658
Added Master contender and detector abstractions.

From: Jiang Yan Xu <yan@jxu.me>
Review: https://reviews.apache.org/r/13087
Replaced usage of old detector with new Master contender and detector
abstractions.

From: Jiang Yan Xu <yan@jxu.me>
Review: https://reviews.apache.org/r/15510
Fixed a flaky test: SlaveRecoveryTest.ShutdownSlave.

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