ab4dae55eb
Change PlayEventFilter.started/ended from StringCriterion to DateCriterion so they support GREATER_THAN / LESS_THAN / BETWEEN, enabling "finished in year Y" to be expressed through the filter system. PlayEvent.started/ended are DateField columns, so the criteria apply with bare field names (no __date lookup, unlike SessionFilter.timestamp_start which is a datetime). This mirrors the existing PurchaseFilter DateField precedent. Deserialization auto-switches via the field annotation and the serialized JSON shape is unchanged, so the type change is backward-compatible. Prerequisite for #65 Tier-2 stats-page filtered links. Part of #61. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>