53290c96

Mutation: add SwitchFunctionArguments operator

## What

Adds a new mutation operator, **`SwitchFunctionArguments`**: at a prefix function (or data-constructor) application, for every pair of value arguments that have the *same type*, it emits one mutant that swaps those two arguments.

Examples (from the new `Example.SwitchArgsLib`):
- `divideThe a b = div a b` → `div b a` (one mutant)
- `makeColour r g b = RGB r g b` → three mutants: swap (r,g), (r,b), (g,b)
- `greyscale v = RGB v v v` → **no** mutants (every swap is a no-op)

## How

- Runs on the typechecked AST (`GhcTc`), reading each argument's type via `lhsExprType` and comparing with `eqType`. The same-type precondition guarantees the swapped application stays well-typed; the existing desugar-validation pass drops anything that slips through.
- **Maximal-spine only:** gated on `instrumentEnvAppDepth == 0`, so the curried sub-application `f a` inside `f a b` does not re-emit a swap the full spine already covers.
- **No-op skip:** pairs whose arguments have identical source text are dropped (the mutant would be identical to the original and unkillable).
- Rendering: a new `SwapSpans` source delta plus a pure, unit-tested `applySwapSpans` that swaps the two argument substrings in the source preview.

## Tests / feedback loops

- 4 new unit tests for `applySwapSpans` in `InstrumentSpec`.
- New `Example.SwitchArgsLib` + gen spec that kill every swap mutant.
- Disabled the operator on the symmetric `majorityOf5Wrapper` in `ConstFnLib` (its swaps are equivalent, unkillable mutants) and documented the new site on `impliesPair`.
- Golden manifests regenerated.

Validated locally:
- `stack build`/`test sydtest-mutation-plugin` — 34/34 pass
- `nix build .#checks.x86_64-linux.mutation-manifest-example` — PASS
- `nix build .#checks.x86_64-linux.mutation-sydtest-mutation-example` (all-killed) — PASS
- `pre-commit run --all-files` — PASS

Plugin version bumped to `0.4.0.0` with a CHANGELOG entry.

Suite timing

Time to Start Worker time Duration Time to finish Idle
Config 3s 2s 2s 5s 3s
Eval 4m05s 40s 40s 4m45s 3m59s
Build 27m40s 9m45s 6m33s 34m14s 22m55s
Suite 3s 10m27s 34m10s 34m14s 26m58s

Timeline

0s28m29m30m31m32m33m34m