ConstRegisters (or replaces) a step under id; null unregisters it.
⚠️ The null case is an asymmetry with registerHandler, and it is deliberate.
That one no-ops on a falsy handler because nothing ever had to take a handler back.
A step belongs to a plugin that can be destroyed, and a destroyed editor still
holding the drain hostage on its images is a leak with a very long fuse: the hook
survives the DOM it was written for.
Stable identifier of the step.
The step, or null to remove it.
the registered steps, in registration order.
Test seam: clear all registered steps.
In-core registry of pre-drain steps. Read by the drain, one pass, in order.