Async TCP connection to node, so connection timeout can be set.

Hi,

I've made some enhancements on the tcp connections. 
The TcpClient.Connect() method uses a default 20 sec timeout, and .net framework does not expose any field or property to set it. (See issue #64)
I use async connect so we can use a less than 20sec timeout to connect to a node.