Track peers' available blocks

A small piece of logic that will be needed in headersfirst: knowing up to which point each peer is synchronized. As we no longer react on specific messages to trigger fetching blocks, but instead actively & asynchronously fetch what we're missing, we must know what we can ask from whom.

This is not very useful now, except that it adds 'syncheight' to getpeerinfo (which is much more meaningful than startingheight, imho).
There is no new information in this case, but hashLastUnknownBlock may
after a while refer to a known one, so we want to update hashBestKnownBlock
in that case. It's just done here because SendMessages is called
periodically.