Setup async interface for discovery module
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.