distinguish between transient and permanent errors

In order to only retry on temporary problems, but fail on permanent
problems, let's build some logic to distinguish these.

We have 3 clear cases

 1. We are beyond our time budget -> fail immediately
 2. The remote is not reachable -> retry, if we could ever connect,
    fail otherwise
 3. The net package classifies this as Temporary condition or Timeout ->
    retry

All other cases are considered permanent failures.
One-line case
Merge pull request #33 from Jimdo/ignore_only_transient_log_errors

distinguish between transient and permanent errors