Effects: Constructs a pool resource object that will obtain memory from 
upstream
whenever the pool resource is unable to satisfy a memory request
from its own internal data structures
.  The resulting object will hold a copy of 
upstream,
but will not own the resource to which 
upstream points
.[
Note 1: 
The intention is that calls to 
upstream->allocate()
will be substantially fewer than calls to 
this->allocate()
in most cases
. — 
end note]
The behavior of the pooling mechanism is tuned
according to the value of the 
opts argument
.