Add timeout for requests in SimpleAsyncHTTPClient's queue.

The connect_timeout and request_timeout in HTTPRequest only matter when
the _HTTPConnection get created. In heavy-loadded situation requests in
SimpleAsyncHTTPClient may have already timeouted before they pop out
from queue and get actual processed. This commit adds an timeout
callback for every request appended to SimpleAsyncHTTPClient's request
queue that cannot be processed immediately.
Add a test case for async_timeout in SimpleAsyncHTTPClient.
Remove `async_timeout` and use `connect_timeout` instead
Merge remote-tracking branch 'codeb2cc/async-request-timeout' into merge
Don't make the request if it timed out in the queue.

Use IOLoop time instead of request.start_time (which is wall time).
Misc test fixes.
Fix --debug_gc option on python 3.