elelem v0.3.0 — callbacks chain instead of replace

Registering the same On* twice now runs both handlers, in registration order,
and the first error stops the chain. Previously the second registration
silently discarded the first, which failed by absence: no error, no log, just a
handler that stopped running.

ResetCallback(kinds...) and ResetCallbacks() are how a caller replaces rather
than adds. The two token-limit handlers keep replace semantics on purpose.