cpp/memory/unsynchronized pool resource

The class is a general-purpose memory resource class with the following properties:
 * It owns the allocated memory and frees it on destruction, even if has not been called for some of the allocated blocks.
 * It consists of a collection of pools that serves requests for different block sizes. Each pool manages a collection of chunks that are then divided into blocks of uniform size.
 * Calls to are dispatched to the pool serving the smallest blocks accommodating the requested size.
 * Exhausting memory in the pool causes the next allocation request for that pool to allocate an additional chunk of memory from the upstream allocator to replenish the pool. The chunk size obtained increases geometrically.
 * Allocations requests that exceed the largest block size are served from the upstream allocator directly.
 * The largest block size and maximum chunk size may be tuned by passing a std struct to its constructor.

is not thread-safe, and cannot be accessed from multiple threads simultaneously; use if access from multiple threads is required.