style.fill / style.stroke may be a gradient or pattern
spec object, and style.shadow a Shadow spec. Each is
materialised as a real <linearGradient> / <radialGradient> /
<pattern> / <filter> in one deduped <defs> and
referenced by url(#…). Two identical specs share ONE def.