storage: GetBlob: write to a local tempfile
storage: GetBlob: write to a local tempfile

When reading blobs (e.g., layers) from the storage, write the data to a
temporary file first and return its file descriptor.

The main goal is to keep the time of the storage being locked as short
as possible.  With this approach we are disk-bound which is generally
faster than the being network bound.

The motivation for this change is the desire to allow for accessing the
storage during pushes.  We have attempted to optimize certain execution
paths in containers/storage but those require the callers to know
whether data will be manipulated or read, which is far from being
trivial.  The daemon-less nature of the storage also requires to write
certain data.

This approach here is entirely transparent to the storage.

Signed-off-by: Valentin Rothberg <c8d7c67387706f1534261b1aba83f5c355c00ff5@redhat.com>

containers/image,containers/image