Introduce engine::actions: an input-source-agnostic action layer that
fans keyboard, gamepad, and Feathers UI (Button/Checkbox) input into a
single ActionState<T> resource, so games gate systems on abstract actions
rather than raw inputs.
- GameAction trait + #[derive(GameAction)] proc macro (new engine_macros
crate) to declare each enum variant's ActionKind via #[action_kind(...)].
- Three kinds: Instant (momentary), Toggle (persistent on/off), Axis (Vec2).
- Remappable InputMap<T> with additive bind(action, [Binding, ...]).
- Symmetrical entry points over a unified ActionValue: run_if(on_action(a))
to gate any kind, action_value(a).pipe(sys) to deliver its payload;
typed axis_value/toggle_value helpers for bare Vec2/bool.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>