Fix newtype instance GADTs

Authored by RyanGlScott on Jul 5 2018, 7:49 AM.

Description

Fix newtype instance GADTs

Summary: This was taken from Richard's branch, which in turn was
submitted to Phab by Matthew, which in turn was commandeered by Ryan.

This fixes an issue with newtype instances in which too many
coercions were being applied in the worker. This fixes the issue by
removing the data family instance axiom from the worker and moving
to the wrapper. Moreover, we now require all newtype instances
to have wrappers, for symmetry with data instances.

Reviewers: goldfire, bgamari, simonpj, mpickering

Reviewed By: mpickering

Subscribers: simonpj, rwbarton, thomie, carter

GHC Trac Issues: Trac #15318

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

(cherry picked from commit 927518668111584a06f12bd9eb1b0910a38acf4f)