Implement retry for config API requests

This feels slightly flakey, but it *is* what the old version does.

It’s also a nice example of how easy it is to add retries. We could
probably build a nice circuit breaker around this, if someone hasn’t
already.

- creates a buffered channel to safely communicate the single response
  between goroutines
- defines a function to try to get a usable http.Response from the API
- defines a hard timeout of 5 seconds with an exponential back-off
  approach