sheep/recovery: allocate old vinfo by using sys->cinfo

Scene:

  1. start up 4 sheep daemons in one cluster

  2. write data into the cluster

  3. "dog kill node 2" and wait for recovery complete
     current epoch status ('O' for update epoch, 'X' for stale epoch):

        node:  1  2  3  4
        epoch: O  X  O  O

  4. kill all nodes

  5. start up all 4 sheep daemons again and wait for recovery complete

    5.1: start up node 1, 2, 3

        node:  1   2   3
        epoch: O   X   O  (wait for join status)

    5.2: join the node 4
        node:  1   2   3   4
        epoch: O   X   O   O (okay status)

    but now node 4's old cluster info is wrong

        wrong old cinfo: [1, 2, 3]
        right old cinfo: [1, 3, 4]

then we read out the data and will find out it is corrupted.

The reason is the code use information from cluster as old vinfo, but the
information from cluster present 4 nodes, not previous 3 nodes status.
We don't need to worry about "node 2" who's epoch is stale, it will find
out oid correctly in recovery process because it use current_vnode_info as
'cur_info' argument in start_recovery().

To solve this problem, we allocate old vinfo by using nodes information stored
in epoch (which has been loaded into sys->cinfo) instead of which read out from
new cluster (zookeeper/corosync, etc.).

Cc: Liu Yuan <namei.unix@gmail.com>
Cc: MORITA Kazutaka <morita.kazutaka@lab.ntt.co.jp>
Signed-off-by: Robin Dong <sanbai@taobao.com>
Signed-off-by: Liu Yuan <namei.unix@gmail.com>
sheep: add test case for recovery from failed cluster

Cc: Liu Yuan <namei.unix@gmail.com>
Cc: MORITA Kazutaka <morita.kazutaka@lab.ntt.co.jp>
Signed-off-by: Robin Dong <sanbai@taobao.com>
Signed-off-by: Liu Yuan <namei.unix@gmail.com>