Data model abstractions for Teksilo.
Provides reactive collection types (ListModel<T>, TreeModel<T>) and
change notification enums (DataChange, TreeChange) for data-driven
widgets like ListView, TreeView, and Repeater.
The two source traits — [ListDataSource] (flat) and [TreeDataSource]
(hierarchical) — are the read-and-command interfaces every data view talks
to. ListModel / TreeModel are built-in implementations; an external
source of truth (e.g. a Qleany entity store) implements a source trait
directly and so never mirrors itself into a built-in model. Each trait
carries a capability protocol — identity (key_at/index_of), DnD
validation (drag/can_accept/accept_drop/on_drag_out), and lazy
loading (row_state/request_window/can_fetch_more/fetch_more) — as
defaulted methods (see [dnd_types]).
Chart data follows the same shape: [ChartModel<T>] is the reactive,
multi-series primary model (mirroring ListModel/TreeModel), with
[ChartWindow<T>] / [ChartAggregate<T>] streaming/rollup projections
and [ChartSelection] for point-level selection.