1) Better naming.
2) Use MIN macro for choosing the size to copy over from the old
buffer to the new one. Also fix issue where we free the old region of
memory before copying it over to the new buffer.
Manages individual allocations via a bump allocator (region), with
unfit allocations triggering a new region allocation that is added to
a linked list. Any new region allocations will always be oversized
for the initially requested size, to amortize the cost of future
allocations.