Generic Object pooling API with several implementations.

The `com.frameworkset.commons.pool2` package defines a simple interface for a pool of object instances, and a handful of base classes that may be useful when creating pool implementations. The API supports pooling of unique objects which can be requested via a key as well as pools where all objects are equivalent.

The `com.frameworkset.commons.pool2.impl` package contains several pool implementations. {@link com.frameworkset.commons.pool2.impl.GenericObjectPool GenericObjectPool} has many configuration options and can support a limited set of objects such as would be useful in a database connection pool. {@link com.frameworkset.commons.pool2.impl.SoftReferenceObjectPool SoftReferenceObjectPool} has no limit on the number of objects in the pool, but the garbage collector can remove idle objects from the pool as needed. There is also a keyed version of {@link com.frameworkset.commons.pool2.impl.GenericObjectPool GenericObjectPool}, {@link com.frameworkset.commons.pool2.impl.GenericKeyedObjectPool GenericKeyedObjectPool}