Make `Struct.extend` variadic

This is a convenience for chaining `extend` calls, which is a pattern I noticed myself repeating when composing sets of properties into a single struct definition.