p2p: Allow concurrent block requests
p2p: Allow concurrent block requests

This adds the possibility of multiple concurrent requests for blocks
from remote peers.

Requesting the same block multiple times concurrently from a peer is an
error. Previously this wasn't a problem since the only place that
requests blocks is the syncer and it correctly de-dupes requests.

In a future commit we'll introduce the ability of external clients to
ask for blocks, so concurrent syncer and external requests could race,
leading to problems.

This fixes the issue by keeping track of in-flight requests and allowing
multiple callers to request the same block from the same peer.

jrick/dcrwallet,decred/dcrwallet,jrick/dcrwallet,decred/dcrwallet