swh.search: Define an interface for search backends and use it
This also:
- fixes slight inconsistencies we had.
- add tests to ensure signatures match (ala storage but in a dedicated tests because fixture hell)
Related to T2516
Test Plan
tox
Migrated from D3685 (view on Phabricator)