shape.create and shape.edit accept the full paint model for fill and
stroke: solid colours with alpha or a model colour, gradients with
opacity stops, midpoints, offset, dither and align, and patterns with
id, angle, link and phase. Malformed paint values are rejected before
the document changes. shape.info reports the same complete paint JSON.
Pattern paints resolve a document or library pattern and embed its tile
in the same undo step, and shape caches render with the document's
patterns. Copy/Paste Fill and Stroke keep a snapshot of the referenced
pattern so pasting still works after the source document is closed, and
refuse to overwrite a different pattern with the same id.
Refs #2496