b4ccc970

By: Tom Sydney Kerckhove <syd@cs-syd.eu>

Mutation: per-mutation mitigation hints + binding name in manifest & report

Replace the operator alternative 5-tuple with a MutationAlt record carrying
an extra optional mitigation message (mutAltMitigation), so an operator can
explain how a mutation it produced may be mitigated.  All operators are
converted; only SwitchFunctionArguments sets a message (pointing at
skip-calls-to for the symmetric-function case).

Add two optional fields to the manifest record (and the augmented manifest):
  * mitigation  -- the operator's hint, carried through to the report.
  * binding     -- the enclosing top-level binding name, threaded through
                   InstrumentEnv during instrumentation.

The mutation run report now prints, under each surviving mutation, the exact
disable annotation for it ({-# ANN <binding> ("DisableMutation: <Op>" ...) #-})
and any mitigation hint, via the new survivorMitigationLines.

Bumps sydtest to 0.26.1.0 (new export, report output) and documents the
plugin changes.  Goldens regenerated; example gen specs unchanged (all swap
mutants still killed).

Suite timing

Time to Start Worker time Duration Time to finish Idle
Config 3m15s 2s 2s 3m18s 3m15s
Eval 3m18s 40s 40s 3m59s 0s
Build 5m12s 48s 48s 6m01s 1m13s
Suite 3m15s 1m30s 2m45s 6m01s 4m30s

Timeline

0s3m20s3m30s3m40s3m50s5m20s5m30s5m40s5m50s6m