Base class for __pool_alloc.
Uses various allocators to fulfill underlying requests (and makes as few requests as possible when in default high-speed pool mode).
Important implementation properties: 0. If globally mandated, then allocate objects from new 1. If the clients request an object of size > _S_max_bytes, the resulting object will be obtained directly from new 2. In all other cases, we allocate an object of size exactly _S_round_up(requested_size). Thus the client has enough size information that we can return the object to the proper free list without permanently losing part of the object.