Throw ConnectionError when a connection times out

instead of read timeout, so we can ahndle connection failures independently
use non-blocking connect for timeouts

it turns out we were just hanging past the timeout normally
have to catch EINPROGRESS and EISCONN
Merge pull request #10 from github/catch-connect-timeout

Throw ConnectionError when a connection times out