VariantBuilder (for initial review)

It could possibly replace it someday (in a future PR!), but all of the Variant API functions unpack the record, so I'm not sure we'd gain anything without a major refactor.

Agree that the name is bad -- I like your suggestion.