Be slightly less agressive in shrinking the queue.

The power of two is marginally more efficient to calculate, and the less
agressive bounds mean we have to reallocate+copy less. It does mean we might
waste slightly more memory when a large buffer is emptied, but given that
garbage-collection means old slices aren't necessarily freed immediately
anyways, that isn't a big deal.