c0b2f0a5

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

Add --skip-th-splices flag to mutation plugin

Yesod/Persistent codebases produce TH-expanded code that lives in the
HsExpr AST as 'XExpr (ExpandedThingTc orig expanded)' where 'orig' is an
OrigExpr wrapping the unexpanded 'HsUntypedSplice' or 'HsTypedSplice'
node.  Mutations recorded inside the expansion point at the splice's
source location and rarely correspond to anything testable, so they
inflate the timeout and survivor counts without informing the user.

The plugin grows an opt-in --skip-th-splices CLI option that, when set,
leaves splice expansions un-instrumented.  Off by default to preserve
current behaviour for projects that don't have this problem.

mutationCheck.nix and addManifest.nix grow a matching 'skipThSplices'
argument that wires through to the plugin flag.

Suite timing

Time to Start Worker time Duration Time to finish
Config 0s 2s 2s 2s
Eval 2s 37s 37s 40s
Build 6s 1h17m33s 105h02m22s 105h02m28s
Test - - - -
Deploy - - - -
Suite 0s 1h18m14s 105h02m28s 105h02m28s