cli/vacuum: have a --days parameter rather than --finished

It is less precise but more convenient.
Added tag 0.15.0 for changeset e9ecc528967a
api: better indication of what operation is ambiguous
scheduler: avoid overlapping scheduling of the same tasks

For this we fundamentally use the `max_instances = 1` behaviour of
the base apscheduler.

We need to give add_job a function that runs until the end. This will
enable appscheduler to not schedule a new task if the previous is not
finnished.
test: show that scheduled tasks can overlap
helper/prepared: a small function to get the pre-scheduled tasks and their payload
Added tag 0.14.0 for changeset d7587473fd2b
test/api: also with moments
helper/convert_io: provide a converted from strings to the types needed for prepare or schedule calls
api/prepare: do type validation of the input data

This will avoid further pain when we get back the data
to the web ui for instance (rework_ui).
test/api: show that prepare crashes in an undisciplined way on bad input

(and we know it sometimes it also does not crash on bad input ...)
helper/neary_unpack: fix a bad exception type
test/cli/scheduler: make the test more robust against time effects

It is perfectly possible that another task was scheduled just after the
first one did finish. This used to show up on slower machines.
switch from zstd to pyzstd

It offers almost the same interface and binary packages are provided.
ci: have a sourcehut build spec
cli/list-tasks: show more information for the abort case
api/prepare: detect when we prepare a task on a non existing operation / domain
tests: replace format calls with f-strings
Next