Improve WorkItem pool as based on discussions in #189

Removed a number of O(n) searches by removing the reliance on the item existing in the pool list but adding a private bool flag visible to WorkItem or WorkQueue (via friend class) to check if its part of the internal pool to know whether it needs to be allocated back to the pool when purging complete items.