Pool provides an Object-pooling API, with three major aspects:

 1. A generic object pool interface that clients and implementors can use to
    provide easily interchangeable pooling implementations.
 2. A toolkit for creating modular object pools.
 3. Several general purpose pool implementations.
