sync: Add CTimeoutCondition

A condition that can wait for a specified timeout, this is useful when
it is known in advance that events have to be processed at some time in the
future.
net: add StartThreads and StopThreads signals

This allows modules to maintain their own threads.
net: Better inventory request management
Re-introduce mapAskFor (so that we don't waste getdata messages with only 1 inv in each one)
Add debug "tx" and "tx2" options
Process "notfound" messages, and safeguard against unreasonably long ones.
Add CaughtUp() function (needed by later commits)
Rearrange ProcessMessages
Cleanup messy error messages
Add nLastDataPos variable for partial message tracking.
Improve getblocks (reception) logging
Only respond to getblocks requests that are asking for substantially newer block invs.
Add net2 debug option
Better logging of ProcessMessages() progress (needs "net2", "nLastDataPos")
Correct logic so that not both lines are displayed

e.g.:-
2014-02-25 06:56:39 received getdata (1 invsz)
2014-02-25 06:56:39 received getdata for: tx 8e2e08d1d851eb1ac800e814796dd7b86fd6d3a8fad41d5bdcb873ac6f4aba8d
Increase max outbound connections from 8 to 128.
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.
Allow nodes to send version messages more than once.
Antisocial (needs CaughtUp)
Only update last seen time when the node is actually being useful.