Added timeout management (with -t on command line)

I think this patch fixes timeout management issue #11.
SetDeadline isn't the right way to do this. If you check [the documentation](http://golang.org/pkg/net/#Conn), it sets an absolute deadline after which all I/O operation on the underlying connection will fail. At first that seems reasonable, but in fact a single connection may be reused for multiple requests. If you set the deadline for 3 seconds, a few requests might succeed on that connection and then a subsequent request could fail a millisecond in once the underlying connection hits its deadline. AFAIK, the way to do this is to manage a timeout with each request on your own and call [CancelRequest](http://golang.org/pkg/net/http/#Transport.CancelRequest) on the transport.