Clean up BufferDistribution defrecord boilerplate with def-primitive-buffer-dist macro