Set timeout on remote (Add timeout for WinHttpReceiveResponse #2147)

**NOTE**: *This is work in progress, so please don't merge and do comment on this as soon as possible so I could amend the direction of work*

In order to address issue #2147, I would want to add the ability to set timeout value on the remote, that would affect the network operations for that remote.

The reason for that is that the default timeout for WinHttp is 30 seconds, what effectively hampers pushes of bigger repositories.

The changes below alter mostly remote and smart transport cascading the timeout all the way down to the sub transport where all the session magic happens.

For now I implemented the change in winhttp.c. When I get some comments I can go and add the implementation for other sub transports.