Allow deferred type error warnings to be suppressed

Authored by KaneTW.

Description

Allow deferred type error warnings to be suppressed

Adds a flag -fwarn-deferred-type-errors similar to -fwarn-typed-holes.
Changes the boolean flag of -fdefer-type-errors to a 3-state flag
similar to the one used by -fdefer-typed-holes/-fwarn-typed-holes.

Test Plan: Since only the absence of deferred type error warnings when
-fno-warn-deferred-type-errors is passed has to be tested, I duplicated
a test case checking -fdefer-type-errors and adjusted it accordingly.

Reviewers: nomeata, simonpj, austin, thomie, bgamari, hvr

Reviewed By: nomeata, simonpj, austin, thomie, bgamari, hvr

Subscribers: bgamari, simonpj, nomeata, thomie

Projects: GHC

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

GHC Trac Issues: Trac #10283