Synchronized with emane.git's implementation of this code which
includes a unit test.
This commit also fixes two bugs in unqueue_matching and one inb
unqueue:
- unqueue_matching was returning the wrong pointer when
there was no match
- both unqueue_matching and unqueue were not clearing the vacated
queue entry after removing the item