add timeout support

I finally did it ! This is extensively tested and shouldn't break.

I still have a bug when setting also a *request* timeout with core http client: sometimes error events are emitted (like ECONNRESET) after the request's `timeout` event, but I don't think it's related to https-proxy-agent at all since it happens after the proxy connection has been successfuly established. I will investigate it further and submit a pull if necessary.