Support no external connection

Previously, the download cache (and everything build on top of it)
depended on a working connection to any repository used by it.  This
caused issues as one of the supported use-cases is that the buildpack
needs to run without having access to the internet.  This change does
not modify the fundamental behavior of the cache (it still makes a
call looking for 304s).  The change does make the cache behave better
in the face of not being able to connect to a repository.  It does
this by re-using the cached object if an update cannot be completed
successfully, and failing with a more descriptive error message in the
case that a first-time download cannot be completed successfully.

[#54290822]
Merge 54290822-no-external-connection to master

[Completes #54290822]