feat: add the editable page model

Move the canvas page model into onestore::page: Page, Title, Outline,
PageParagraph, Table, TextObject, Image and Unsupported keep stored
identities, resolve inherited formatting, and retain everything else on the
page as Unsupported. page::text::Paragraph coalesces rich text into spans with
UTF-8/UTF-16 offset mapping, hidden-field projection, slicing and invertible
edits. Page::from_space selects the single active page of an object space.
The page writer module is renamed pages.rs; its public types are unchanged.

Validation: 18 model unit tests ported from the canvas branch; every page in
the 396-file public corpus builds a model with distinct identities; Clippy,
fmt and doctests. Merge instructions for the UI branch are in
evidence/M1-MERGE.md.

Assisted-by: claude-fable-5.1
e00506af62clover caruso committed on 9/11/2026, 4:08:05 AMparentad10b47
9 files changedLine totals unavailable