Wait for ms of state-stability, then advance.
Concretely: schedule an advance after ms. If state changes during
the pause (via SetState, Run, or an external signal/2), the
timer resets.
Summary
Types
@type t() :: %Caravela.Flow.Steps.Debounce{ms: non_neg_integer()}