Made proposal number optional in log::catchup.

From: Jie Yu <yujie.jay@gmail.com>
Review: https://reviews.apache.org/r/17339
Allowed log::catchup to retry to tolerate network blips.

In case of a network blip (zookeeper network), log::catchup could get
stuck even if all replicas reemerge later. This is not ideal for some
users such as log::recover.

So I introduced an optional timeout for log::catchup so that the
catchup operation on each position will be retried if timeout happens.

From: Jie Yu <yujie.jay@gmail.com>
Review: https://reviews.apache.org/r/17286
Added Result constructor which takes Option.