This will allow us to use this interface in async code like `swh-scanner`.
Unfortunately, this means calling `asyncio.run` for sync code, but the
performance impact should be negligible.
The `swh_storage.*missing*` APIs are inconsistent for each type, which
requires a lot of boilerplate code. This should be addressed in a
follow-up.
There is also one hack (marked as such inline) needed to have an API that
isn't also plagued by implementation details of needing to keep
ID -> object matchers around. This should be a removed as a direct
consequence of aligning the storage APIs.