Add `Param::Expr` and use in Rust `Store`, `Delay`
In #16768 we're adding a Param::Int to assist with Delay. In fact, Delay also needs some like a Param::Expr to be fully Python independent; this is used in things like stretch handling. (See https://github.com/Qiskit/qiskit/pull/16768#discussion_r4039208159.)
In #16897, we added Rust-native Store, which wanted to store two Expr objects in its payload, and so couldn't fit in StandardInstruction because that only gets a 32-bit payload. If we were to introduce Param::Expr, we could make Store a proper StandardInstruction, which will make it much less special to handle in downstream code.
As a major knock-on benefit, adding Param::Expr would take a big step to allowing us to represent runtime typed/computed angles in gates, rather than just the symbolic ParameterExpression stuff that was always initially intended to get modified by assign_parameters before execution.
(Note: this issue is for core-team discussion - it's not accepting external contributions.)
Source: Qiskit/qiskit