DRILL-5275: Sort spill is slow due to repeated allocations
Rather than create a heap buffer per vector when writing and reading,
the revised code creates a single, shared buffer used for all I/O
within a particular container. This improves performance by reducing GC
and CPU costs during I/Os.
Move I/O buffer, and methods to allocator
Allows the buffer to be shared. Especially in the sort, this is
important, as the sort may have many serializations open at once.
closes #754