Introduce preferred download peers

Keep track of whether we have peers that are preferred candidates for downloading blocks from, but if there are none, also use others.
Yes. IsPreferredDownload() checks whether a node should be preferred. fPreferredDownload() remembers whether we've already counted it as a preferred downloader. Better naming suggestions are welcome :)