Add a provenance field to universal coercions.

Universal coercions allow casting between arbitrary types, so it is a
good idea to keep track where they came from, which now we can do by
using the provenance field in `UnivCo`.

This is also handy for type-checker plugins that provide functionality
beyond what's expressible by GHC's standard coercions:  such plugins
can generate universal coercions, but they should still tag them,
so that if something goes wrong we can link the casts to the plugin.
Update Haddock submodule
Amend TcPluginM interface

Summary:
Expose some new functions in TcPluginM and remove one, in the light of
experience writing plugins.  In particular, I've removed lookupRdrName
because using it to import modules containing instances leads to subtle
bugs; I've expanded on the lookupRdrNameInModuleForPlugins comments.

Test Plan: validate

Reviewers: simonpj, austin

Reviewed By: austin

Subscribers: goldfire, ezyang, carter, thomie, yav, gridaphobe

Differential Revision: https://phabricator.haskell.org/D553

Conflicts:
	compiler/typecheck/TcSMonad.hs
Fix wrong-kind-of-family error message (Trac #9896)
Some Dwarf fixes

- Make abbrev offset absolute on Non-Mac systems
- Add another termination byte at the end of the abbrev section
  (readelf complains)
- Scope combination was wrong for the simpler cases
- Shouldn't have a "global/" in front of all scopes