replace a number of .format calls with f-strings
api/freeze_operations: by default, reset the known operations

We use the `path` of collected operations to
perform the reset. This should cover most reasonnable
scenarios but not those where some operations have
been moved from one module to another.
replace imp.load_source with a new thing based on importlib

The builtin imp module has been deprecated for a long time
and is gone in Python 3.12.
api/freeze_operations: remove the domain_map feature

It has never been used.
doc/readme: update according to recent changes
cli/unprepare: provide a command line to remove a scheduled operation
api/unprepare: to delete a scheduled/prepared operation
cli/list-tasks: accept a --domain parameter
monitor/scheduler/step: re-init the runnable list

Hard to catch that in tests.
monitor/logs: better segregation of messages by origin
monitor: make the schedule plan appear in the monitor logs
monitor: centralize the logging to make it more controllable
monitor/scheduler: cleanup of the definition computation and reloading
monitor/scheduler: better logging of the scheduling definitions
monitor/scheduler: log the crashes happening in the api.schedule calls
api/prepare: if there is a spec and no input, provide an empty dict

This will prevent the most common programming error as of today:
calling api.prepare withouth an input on a task that has inputs.
cli/monitor: use logging.DEBUG if we are asked to
cli/scheduled-plan: a command to list the next hour schedules for a given domain

It is possible to specify a bigger number of hours.
cli/list-scheduled: sort the output
monitor/schedule: indicate the next time something should run