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.