buffer: reimplement Buffer pools

This is an undesirable, but for the time necessary since small chunks
are still too slow. It will continue to be improved as alternatives are
discovered.

One important change to Buffer pools was that they are only allocated if
the requested chunk is < poolSize / 2. This was done because allocations
are much quicker now, and it's a better use of the pool.
buffer: deprecate legacy code

Several things are now no longer necessary. These have been deprecated,
and will be removed in v0.13.
buffer: remove c-style casts