Make `Struct.extend` accept array of extensions

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.