Improve documentation of overlapping instances (again)

Prompted by Trac #9288
Try to explain the applicativity problem

Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>
Rewrite coercionRole. (#9233)

Summary:
coercionRole is now much more efficient, computing both the coercion's
kind and role together. The previous version calculated them separately,
leading to quite possibly exponential behavior.

This is still too slow, but it's a big improvement.

Test Plan: Evaluate by running the "minimized" test from the Trac ticket.

Reviewers: simonpj, austin

Subscribers: simonmar, relrod, carter

Differential Revision: https://phabricator.haskell.org/D73
Optimise optCoercion. (#9233)

The old optCoercion (and helper functions) used coercionKind and
coercionRole internally. This was terrible when these had to be
called at *every* point in the coercion tree during the recursive
descent. This is rewritten to avoid such calls.
Workaround haddock parser error caused by 5e7406d9

Haddock complains if a comment looks like a misplaced Haddock-comment.
In this case, the comment line starting with `-- *kind* and` looked like a
section-heading to Haddock and caused the following error:

    parse error on input ‘-- *kind* and role of its argument. Luckily, laziness should’

This commit just rewraps the line so that no `*` appear at the start of the
non-Haddock comment lines.

Signed-off-by: Herbert Valerio Riedel <hvr@gnu.org>
Richards optCoercion improvement made test cases fail the nice way

This was likely caused by 5e7406d9, which fixed #9233.
Test Trac #9323
Include test case name in performance result

With THREADS=n, for n > 1, it becomes impossible to match the
performance numbers to the test case name. Hence include it in the
output. This also makes grepping through a bunch of logs for a specific
test case much easier, and outweighs the extra verbosity.
Adjust a few performance numbers

These did not yet trigger a failure, but are more than 1% away from the
expected value. Since I now start collecting logs to investigate
deviations from the expected value, it makes sense to reset them. This
way we know that every significat deviation was caused since this
commit.

I only updated bytes_allocated numbers, as these are (mostly)
deterministic. Other depend, AFAIK, on sampling timing, so I did not
bother.
Correctly round when calculating the deviation
Remove unused parameters in OptCoercion (#9233)
OK, I think we've finally solved granularity.

Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>
Build on travis with CPUS=2

With CPU=3 we are hitting resoure limits (probably memory). With CPU=2
this is less likely to happen. We will get more random timeouts, but
these are more easily spotted, and marked as "Failure", not as "Error".
Reduce volume of typechecker trace information
Comments only
Further improvements to floating equalities

This equality-floating stuff is horribly delicate!  Trac #9316 showed
up yet another corner case.

The main changes are
 * include CTyVarEqs when "growing" the skolem set
 * do not include the kind argument to (~) when growing the skolem set

I added a lot more comments as well
Update Cabal submodule to HEAD (1.21)

Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>
Set i686 as the minimum architecture on 32-bit mingw

Signed-off-by: Austin Seipp <austin@well-typed.com>
travis: Install process via cabal

and install to global data base (bad practice, but ok on a throw-away CI
system).
Document OVERLAP pragmas.