Move Storage documentation and endpoint paths to a new StorageInterface class
Documentation was duplicated between the in-mem and postgresql storage, and one of them regularly goes out of date. This deduplicates them both to a new class.
This new class is also the one declaring the API paths, as it did not make sense to have this declaration on the postgresql storage.
Last but not least, this commit adds a test that checks backend classes have all the functions, and they have exactly the same signature as the interface. This will catch stupid bugs before production, eg. if an argument does not have the same name in all classes.
Depends on !320 (closed), !321 (closed), swh-core!122 (closed).
Migrated from D2587 (view on Phabricator)