When the detectors fail, subsequent detect() calls now get failed
Futures directly.

From: Jiang Yan Xu <yan@jxu.me>
Review: https://reviews.apache.org/r/16586
Made ZooKeeperMasterContenderProcess::master an option to codify the
fact that it can be unset after construction.

From: Jiang Yan Xu <yan@jxu.me>
Review: https://reviews.apache.org/r/16588
ZooKeeperMasterContenderProcess::contend now checks if the future for
the previous contend() is still pending and if so it directly returns
that future without recontending.

From: Jiang Yan Xu <yan@jxu.me>
Review: https://reviews.apache.org/r/16589
LeaderContender::withdraw() now always returns false if there is no
membership to withdraw.

This includes when:
- withdraw() is called before contend()
- withdraw() is called after contend() but before the contender learns that it fails to obtain the candidacy
- withdraw() is called after the contender has learned that it had failed to obtain the candidacy

From: Jiang Yan Xu <yan@jxu.me>
Review: https://reviews.apache.org/r/16590
GroupProcess::abort() now also sets all owned memberships as cancelled.

From: Jiang Yan Xu <yan@jxu.me>
Review: https://reviews.apache.org/r/16591
Added an option to StartMaster() wait for leader election result before
returning.

From: Jiang Yan Xu <yan@jxu.me>
Review: https://reviews.apache.org/r/16742