Store IfExtNames for PatSyn matchers and wrappers in interface file.
This way, the Ids for the matchers/wrappers are reused by importing
modules, and thus unfoldings are kept.

Also updates haddock submodule to accomodate tweaks in PatSyn representation

Conflicts:
	compiler/typecheck/TcPatSyn.lhs
	utils/haddock

(cherry picked from commit e0fbf1e3bc062b7ce3f1c515a135fd9f3d49e2ee)
Fix egregious instantiation bug in matchOneConLike (fixing Trac #9023)

We simply weren't giving anything like the right instantiating types
to patSynInstArgTys in matchOneConLike.

To get these instantiating types would have involved matching the
result type of the pattern synonym with the pattern type, which is
tiresome.  So instead I changed ConPatOut so that instead of recording
the type of the *whole* pattern (in old field pat_ty), it not records
the *instantiating* types (in new field pat_arg_tys).  Then we canuse
TcHsSyn.conLikeResTy to get the pattern type when needed.

There are lots of knock-on incidental effects, but they mostly made
the code simpler, so I'm happy.

Conflicts:
	compiler/typecheck/TcPat.lhs

(cherry picked from commit 1fc4f6b973a4fb14b2b15143b2774ec597b4da0f)
Test Trac #9023

(cherry picked from commit 1b45c6b4959762209dbcabf3290feb8673a60b23)