Now proposer advances window only when old is closed

This could introduce some latency in client value processing, but gives
learners a chance to synchronize and is more batch processing friendly.
Yet another attempt to make learner better

Introduced periodic hole checking. Currently it's not very smart and
sends retransmit requests for anything that looks like a hole upon each
run. Some age based approach should be exercised, i.e. when we swap the
whole window and given that we are in sync with ``upstream'' we don't
need to ask for retransmits straight away since it's likely that the
system is currently working on this slice on instances and they will be
filled soon.

At the cost of some extra retransmits this learner seems to work better.