global contact state
persistent pair state (holds the per-record chain heads)
pair record index whose chain should be destroyed
optional contact listener to notify of removal (ignored when queueEvents)
queue removal events onto pendingContactRemoved instead of firing them
Destroy every contact in a pair record's chain.
When
queueEventsis true the removal payloads are pushed onto pendingContactRemoved instead of fired (the body-removal path, where the listener is unavailable — same pattern as the deferred body-removal events). The whole chain is freed and the record's head reset to empty.