Add ParameterizedField variant and parser support
What does this MR do and why?
This is MR 2 of 5 for parameterised field syntax.
MR 1 (!406 (merged)) added FieldParameterDef metadata so each analytics source can declare what parameters its fields accept. This MR adds the types and parser grammar needed so that parameterised syntax like finished(weekly) and durationQuantile(quantile=0.95) can be parsed and represented in the type system. It also adds the ParameterizedField variant to DisplayField, which the analyzer will use (MR 3) to represent resolved backend parameters separately from client-side field functions like labels("bug").
No existing behaviour changes. The new syntax is parseable via parse_fields() but analytics mode does not accept it yet -- parse_fields_without_functions() still rejects FieldFunction in dimensions and metrics. That guard is intentionally kept until MR 3 adds simultaneous analyzer-level validation, avoiding a validation gap where arbitrary function syntax could pass silently (since FieldFunction.base_field() returns None and the analytics validator skips fields without a base field).
FieldFunction.key() quotes all parameter values for round-trip safety through the Typed transform path, which re-parses keys via parse_fields(). Value::Function in literals.rs stays unchanged since expression-level functions (currentUser, today, customField) do not need the extended grammar.
References
- Parent issue: #130 (closed)
- MR 1 (depends on): !406 (merged)
- Design resolution: comment
- Positional/named design: comment
How to set up and validate locally
cargo test-- all 889 tests should passcargo clippy-- should be cleancargo fmt --check-- should be clean