Use correct precedence when printing contexts with class operators

Fixes Trac #9658

(cherry picked from commit 48089ccf4f1f239b3268b2cb52b8aa0f7356485b)

Conflicts:
	compiler/types/TypeRep.lhs
	testsuite/tests/ghci/scripts/all.T
	testsuite/tests/perf/compiler/T5837.stderr
	testsuite/tests/typecheck/should_fail/ContextStack2.stderr
	testsuite/tests/typecheck/should_fail/T8392a.stderr
Improve comments and tracing in SpecConstr

(cherry picked from commit 675c5478793ac8cede5daca4f70cd09846879837)
Introduce the Call data types

This is just a small refactoring that makes the code a bit clearer,
using a data type instead of a triple.  We get better pretty-printing too.

(cherry picked from commit c0fe1d9e7a9f23d050319c77f3a38264f3aa22f8)
Do not duplicate call information in SpecConstr (Trac #8852)

This long-standing and egregious bug meant that call information was
being gratuitously copied, leading to an exponential blowup in the
number of calls to be examined when function definitions are deeply
nested.  That is what has been causing the blowup in SpecConstr's
running time, not (as I had previously supposed) generating very large code.

See Note [spec_usg includes rhs_usg]

(cherry picked from commit af4bc31c50c873344a2426d4be842f92edf17019)