Sometimes nodes send many duplicate blocks. This patch disconnects the peer that's running
behind. This shouldn't happen, but it can and does sometimes, so this code caters for that.

This code also becomes more important as the block download algorithm is changed in future,
such as concurrent block downloads from multiple peers, and retries are sent to other peers
when peers seem unresponsive, only to become responsive again later, by which time
they are sending duplicate blocks.
Show only one zero instead of many when getblocks request received with a hashStop of uint256(0)
Increase max outbound connections from 8 to 128.
Max blocks in transit set to 16
Allow peers to determine how much they are seen to be misbehaving.

This can allow peers in future to modify their behaviour to avoid netsplits.
Add CaughtUp() function (needed by later commits)
Getblocks debugging
Recv getblocks logging (no need to display hash)
Record timings of block download process
Fix many orphan problem. Don't getblocks following orphan reception. (Needs CaughtUp())
Don't getdata blocks if an inv is received that wasn't requested (getblocks).

Also, show invs being received (and indicate whether we have the block or not).
Better logging of ProcessMessages() progress
Show downloaded block size and time taken to download.
Attempt to reselect a SyncNode when blocks aren't arriving.
Allow nodes to send version messages more than once.
Display unknown commands received.
Report ping times at they arrive.
Antisocial (needs CaughtUp)
Add speed metric to CNode for better SyncNode selection