Document BufferCache compaction algorithm
Fix #28: BufferCache::compact too expensive

Remove the vector::erase and only clear the buffer allocation. Requires
keeping track of allocated commands. Refactor code to use atomic ssize_t
for size variables (was a_int32_t).
re-enable compact
Revert "Fix #28: BufferCache::compact too expensive"

This reverts commit 48e513f747b4c24d176a6f01d8ea5e806e9e4fca.
Fix #28: BufferCache::compact too expensive by using list instead of vector