Support more robust fallback scenarios.

Previously, kappa's main goal was to facilitate a private repo. As resiliency has proven more important, new fallback rules are necessary. This PR establishes the following rules:

1. If the primary registry is down (non 200 or 404 response) the request fails without fallback. This is to protect against unintended packages being served in the case of a possible naming collision. Fallback will only occur on a 404 from the initial registry.

2. If the primary registry times out the request will fail.

3. If a secondary registry is down or times out, the request will fall back to subsequent registries until all are exhausted.

4. All write operations succeed or fail at the first registry.