Explain the requirement for invariant type params ...

... in the diagnostic when a coerce operation fails.

compiler/type_assign.m:
    Add slots to the representation of the should_be_invariant_arg
    coerce_fail with an explanation of *why* a type parameter
    should be the same in the from-type and the to-type.

compiler/typecheck_coerce.m:
    Record such reasons when computing which type params should be
    invaraint, and use those recorded reasons when filling in
    the new slots.

compiler/typecheck_errors.m:
    Generate explanations from the values in those slots.

tests/invalid/coerce_type_error.{m,err_exp}:
    Expand this test case, and expect updated diagnostics.

tests/invalid/Mercury.options:
    Specify --no-intermod-opt for the coerce_type_error test case.

tests/invalid/coerce_typecheck_eqv.err_exp:
    Expect an updated diagnostic.
