Make requests time out

Requests are failed after (a hard coded) five seconds. They are never sent if the timeout happened while the request was queued.

If a request has been sent its channel cannot be reused since the response may come at a later time. This means that a connection can be starved of channels if too many requests get lost in such a way that the server never sends any replies.

If the response comes after the request has timed out the response will be ignored, but the channel cleared.