Added encode/decode functions for varint

Currently they are unused, but might be useful in the future.
Reduced message spam in learner

Now acceptor send all 3 numbers representing it's state on a regular
basis, namely highest accepted, highest finalized and lowest available
instance numbers.

When picking an acceptor to fill in the gap in learner's state,
acceptors are shuffled and the first one, having highest finalized greater
than a gap's right bound, is selected. Otherwise all acceptors are
requested for a retransmit.