swp_shrink: Try to reallocate big chunks
If a chunk is larger than 1/4 of FILE_BLOCK_SIZE, the rest of the block
very often stays fragmented.
As an example, every insert starts by allocating full FILE_BLOCK_SIZE.
This can never be satisfied from a partial block, so a new block must
be allocated. When this block is later shrunk to the actual size of the
insert (possibly much smaller), the whole block will still be occupied,
and the rest is unlikely to be taken for another allocation, since there
is normally plenty of room in other partially full blocks...
Do not make a complete new allocation, only walk the free list, and if
there is no suitable chunk there, simply leave it as is.