Add CaughtUp() function (needed by later commits)
Rearrange ProcessMessages + add nLastDataPos variable for partial message tracking.
Don't request blocks when block invs received unless it's the syncnode, or we've CaughtUp()
Force selection of a new syncnode since the current syncnode is about to stop sending blocks.
Replacement stalled block logic. Depending on the situation, it will either disconnect
the peer (as previous behaviour), or it will reselect a syncnode (e.g. when 500 blocks
have been received from the syncnode).
Add commandline option for sync timeout
Rename MarkBlockAsReceived to MarkBlockAsRequested to reduce confusion.
Show downloaded block size and time taken to download.
Debug when a block is incoming and show how many blocks still to come.