exchange: extract pull function from localrepo

The localrepo class if far too big. Push and pull logic are extracted and
reworked to better fit with the fact we exchange more than bundle now.

This changeset extract the pulh code. later changeset will slowly slice it into
smaller brick.

The localrepo.pull method is kept for now to limit impact on user code. But it
will be ultimately removed, now that the public API is hold by peer.
debugobsolete: extract marker display in a dedicated function

We want to be able to reuse and extend it from other function or
extension while working on markers exchange.

This changeset is pure core movement.