The grid-state change detector hashed only column order, sorts and filters,
so changing a column's Value Aggregation (aggFunc) never triggered
onColumnStateChange. On reload the column fell back to its default
initialAggFunc (sum-like), which is why selecting "None" reverted to Sum
while other values appeared to stick.
Extract the signature into getColumnStateSignature() and include per-column
aggFunc, normalizing the "None" case (null/undefined) to a stable sentinel so
the change is captured and persisted. Add unit tests.