The new instance resolves to `s ~ [Char]` as soon as we know that `s ~
[a]`, to avoid certain functions (like (++)) causing a situation where
`a` is ambiguous and (currently) unable to be defaulted.
Reviewers: #core_libraries_committee, hvr, austin, bgamari
Reviewed By: hvr, bgamari
Differential Revision: https://phabricator.haskell.org/D1572
GHC Trac Issues: #10814