Create a backend that coordinates packfiles and loose objects
Object databases effectively consist of two different formats:
- Loose objects store a single object as zlib-compressed file.
- Packfiles contain multiple objects and may contain additional metadata like bitmaps.
The coordination of these two backends is non-trivial. While we could model this after the "files" ref backend, where this backend encapsulates both access to loose files as well as another proxied "packed" backend, it is expected that this will not work well because there are many callers that need to get intimate with either of those backends. Consequently, we would have to leak implementation details of the respective backends to make for example only loose objects available.
Instead, the idea is to implement a new "files" backend that proxies both the "loose" and "packed" backends. Like this, users that need to get intimate with the on-disk format can directly access the lower-level backends to access their respective objects directly.