VariantBuilder (for initial review)

If it does need a realloc, will it still be correct?  (Worth avoiding, sure)

How about `estimate_shared_buffer_size()` instead?