try using a pool of reusable buffers in both queue and refcnt

to avoid allocating/releasing a big amount of small objects which
may fragment memory wasting precious space
just a note
allow to set the size of the reusable queue of wrapper structures at creation time
new_node() now requires a third argument

as an optional private pointer passed to the terminate_node callback
allow to query the size of the rqueue
ensure resetting the delete flag when reusing a pre-existing node
allow to set the size for the internal buffer pool without changing the existing API

but just introducing a new utility function to allow changing the size at runtime
backoff before releasing a popped entry
delete is just a boolean flag
minor cleanings and documented queue_set_bpool_size