Handle SimpleAsyncHTTPClient request timeout in heavy-loaded situation 

In a heavy-loaded situation when requests have to be queued, they may have waitted for a long time before pop out and get actual process. These requests become useless and already timeout indeed. The connect_timeout and request_timeout in `HTTPRequest` and their timeout callback only matter when the _HTTPConnection get created. The SimpleAsyncHTTPClient handles requests ignoring their age in queue. As a result old requests get processed and block new request.
I've added a `async_timeout` param to `HTTPRequest` and corresponding timeout logic in the `SimpleAsyncHTTPClient`, hoping this would solve the problem.