Prevent client from missing a block if it's advertised to it by a peer who then reports the block is not available when client requests it. We remove it from the inventory of the bad peer and add it back to our list of items_to_fetch if another peer has the block in its inventory. If we are synching with the bad peer, we also inhibit fetching further blocks from him (or disconnect him if he doesn't need blocks from us). Also added a little extra logging when we call disconnect_from_peer.