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 14s 2s 2s 16s 14s
Eval 32s 24s 24s 57s 16s
Build 3m06s 8s 9s 3m16s 2m09s
Suite 14s 35s 3m01s 3m16s 2m40s

Timeline

0s40s50s3m10s