F11 dynamic shader parameter overrides
======================================

This change adds a third, fully dynamic authoring layer to the wallpaper shader
pipeline.

Core behavior
-------------
- F11 follows each selected `.wallpaper` preset's `pass=` entries and reads the
  referenced `.params` files dynamically.
- Every valid numeric `.params` entry becomes editable in the expanded stage.
- No parameter/uniform names are hardcoded into HyprTile.
- Preset `.params` files are never modified.
- A stage stores only changed values as `name=value` overrides.
- Reset removes an override and immediately restores the preset default.
- Reset all removes all overrides for that stage.
- Scalar, vec2, vec3 and vec4-style numeric values are supported.
- NaN/Inf and malformed values are rejected.
- Runtime application checks that the override component count matches the
  preset parameter's component count.
- Multi-pass packs receive the override only in passes where that key exists.

Persistence and sharing
-----------------------
- `config.json` stores overrides in each `wallpaper_shader_chain` item as
  `param_overrides`.
- `.hyprlook` v1 uses the same optional `param_overrides` object.
- Only overrides are serialized; untouched values continue to come from the
  installed preset.
- Overrides unknown to the currently selected/installed preset are preserved
  non-destructively for later preset switching or pack installation.

Runtime interface
-----------------
`hyprtile-wallpaperd` now accepts repeatable per-pack arguments:

    --pack PACK:PRESET --pack-param u_scale=3.20 --pack-param u_offset=0.1,-0.2

`--pack-param` applies to the immediately preceding `--pack`, matching the
existing `--pack-text`, `--pack-font-*`, opacity and blend semantics.
