Flush delete

Alright @nova77 - here's how I'd do flush and delete.

Delete drops the queue from the queue_map, and tells it that before it destroys, it should delete all its data.  But it uses the shared_ptr semantics of other clients that might still be using the queue to keep it alive until all clients have gone away.

The flush implementation is much simpler.