An object container which also manufactures objects on demand.
This container extends ObjectPile by acting as an object well (or source), not just a passive store. That is,
whereas ObjectPile only lets you take out what you put in, this class's extraction operation may result in new objects
being created on demand (and will do so, on the first extraction).
You should only use its store() methods to return objects which were previously extracted from this well (which also
means that they would have been originally created by this well), but beware that it does not enforce this.
If no factory is provided, this class auto-creates the stored object elements using their the default constructor.
Since objects start off on the well and are expected to be returned to it if and when the caller is done with them,
the extract() method effectively hands objects out on loan, while the store() methods return them.
When we talk below about the "extant population", we mean the total number of objects in existence, whether currently
stored in the well or out on loan.