Add Clang block support

Buffers are now always allocated, though they may go unused. This is
mainly because the block is assigned post-buffer-allocation, so it's
not really safe to assume there are no callbacks in the sparse_begin
call. It'd likely work to just leave it as NULL and let realloc take
care of things, but it's better to get any allocation errors out of the
way before running the parser.