1124625 - fail quickly if there is a connection error

Allows requests timeout settings to be configurable and set reasonable defaults. If requests does timeout (a connection error), these changes prevent requests from attempting the same base url again.
[1124625](https://bugzilla.redhat.com/show_bug.cgi?id=1124625)
If I'm reading correctly, for 10000 requested downloads that all have the same netloc, if the first one has a connection error, this log statement will happen 10000 times. That's a lot of logging. It's also not accurate, because only one connection was attempted, whereas the user might think all of them were tried and failed. A real connection error is a different circumstance than a skipped request, so we should handle them differently. I like this better:

Create a custom exception class, called something like ``SkippedLocation``. Raise it on line 194 above, and catch it separately down here. Log at debug level the full URL that was skipped and say why it was skipped. Call the ``report.download_connection_error()`` function also. This more accurately logs that the download was skipped, and it moves the avalanche of log messages to the debug level.

Now you might be thinking that we really don't need the exception at all, and that using an exception for a normal workflow is bordering on a misuse of exceptions. You would be correct! The alternative is that at line 194, log something, call the report function, and then just return. I like that approach a lot. The problem is that we have logic at the end of this function that needs to get called, such as lines 243 and 274. So we can't just bail out, and the only way to skip the intervening logic is with the exception. Bummer.

The best thing would be to refactor this function, which would be a big improvement and lots of fun, but more work than we want to bite off right now.