The independent_text table had the text and rotation of a free text but
not its width, and a width change did not update the row at all -- not
even its width and height, which follow the wrapped text. Add a
text_width column (NULL for the automatic width) and update the row on
textWidthChanged.
Test: tst_scriptfreetextwidth reads the table with qet.query() (fails
before).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>