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 35s 2s 2s 37s 35s
Eval 40s 40s 40s 1m20s 2s
Build 3m20s 8s 9s 3m30s 2m01s
Suite 35s 51s 2m54s 3m30s 2m38s

Timeline

0s50s1m1m10s1m20s3m30s