Initial Block Download optimisations

I've been developing these improvements in parallel with headersfirst8.

It's now been optimised for use with early to late block chain so adapts to the block sizes and also the bandwidth of each node to make optimal use of the connections available.

The sipa disconnect code has been disabled as it usually disconnected the most important node (with my changes), but it will still display when the logic would have executed.

Please do test and compare download times with before this test and I'm sure you'll see improvements.

 It's not yet optimised for use with earlier blocks (which were small enough to download in batches of 500 each), but that will be coming shortly. Raising the pull request so that people can view and comment on some of the changes.