ConstRegistry destroy / test seam: detaches listeners, unhooks the notify primitive, tears down the renderer and removes the container this lifecycle created.
Unregistering is not tidiness. destroy() leaves the singleton without a
container, where _processQueue drops everything it is handed — so a primitive
still pointing at it turns every later notify() into a lost message, with
no console fallback either, since the primitive believes it has a renderer.
Idempotent lifecycle for the toast renderer.