Add the following interfaces to the bufferl memory manager:
ptr = alloc(size, min, max) - allocate a block with given size, but
with a total capacity between min+max.
trim(ptr) - free up extra capacity, so current size is the capacity
Rationale: It isn't always possible to anticipate the size of a vector. When creating a new vector, one strategy is to over-allocate the vector and then trim the size once the vector is complete. These routines allow us to implement this strategy.