Auxiliary buffer

This implements two kinds of buffers meant for use in arbitrary C++ functions. The first is an aux_buffer, which is meant to be storage accessible by an element. The second is thread_aux_buffer, which is storage on a per thread basis.

This PR implements auxiliary_buffers completely at the ckernel level, but only implements the machinery in functor_arrfunc for thread_aux_buffers.