Http client response timeouts

Allow specification of a timeout period for responses. If the response has not completed (server not sending bytes fast enough or at all) within the specified timeout, fire the exception handler with a timeout exception. If no timeout set, defaults to old behavior (no timeout). If used, of course the timeout can be adjusted to the expected file size (as known from the Content-Length header in the case of non-chunked responses), in essence requiring a certain minimum average bytes per second. The primary use case is to not hang the response for too long in cases of flakey network connections or very busy servers.