* Replaced delegate with Action<T>
* Change delegate to Action<T>
* Add unit test to confirm issue
* Fix NullReferenceException in ObjectPool when reusing all returned items
The ObjectPool's Use() method was throwing a NullReferenceException when
all items had been returned to the pool and New() was called again. This
was due to _tailNode being null in this scenario.
Added a null check for _tailNode in Use() method to properly reinitialize
the linked list structure when the pool has been emptied and refilled.