LU-1352 recovery: rework recovery timer functions

- there is a race in check_and_start_recovery_timer, which causes
  the recovery timer is armed more than one time.
- in reset_recovery_timer, the remaining time could be negative.

this patch includes several patches landed after b2_1 was released
http://review.whamcloud.com/1292
http://review.whamcloud.com/1620
http://review.whamcloud.com/1722

the above patches are introduced with IR(Imperative Recovery), and
this patch excludes code lines of IR.

Signed-off-by: Hongchao Zhang <hongchao.zhang@whamcloud.com>
Change-Id: Ia4ec804c58c4c94c2a33a3649acdd40d000f45d2
Patch-Set: 3