Implement deriving strategies

Authored by RyanGlScott on Sep 30 2016, 7:15 PM.

Description

Implement deriving strategies

Allows users to explicitly request which approach to deriving to use
via keywords, e.g.,

newtype Foo = Foo Bar
  deriving Eq
  deriving stock    Ord
  deriving newtype Show

Fixes Trac #10598. Updates haddock submodule.

Test Plan: ./validate

Reviewers: hvr, kosmikus, goldfire, alanz, bgamari, simonpj, austin,
erikd, simonmar

Reviewed By: alanz, bgamari, simonpj

Subscribers: thomie, mpickering, oerjan

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

GHC Trac Issues: Trac #10598