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.
In the lines above, both DYND_SRC_MAX and DYND_ARG_MAX are defined, but the comment is for DYND_SRC_MAX both times, and the descriptions of the differently named parameters are the same.