Make raiseIO# produce topRes
Make raiseIO# produce topRes

Make `raiseIO#` produce `topRes` instead of `ExnRes`. `ExnRes` leads to
demand analysis being too aggressive, IMO, allowing imprecise exceptions
produced by `throw` to replace exceptions thrown by `throwIO` that
would like to think of as precise.

This fixes that, but is certanly much more conservative than we would
ideally like. Let's see how bad it is.

Fixes Trac #13380

Reviewers: austin, bgamari

Subscribers: rwbarton, thomie

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

shlevy/ghc,shlevy/ghc,sdiehl/ghc,shlevy/ghc,ezyang/ghc,ezyang/ghc,ezyang/ghc,sdiehl/ghc,ezyang/ghc,shlevy/ghc,shlevy/ghc,ezyang/ghc,shlevy/ghc,sdiehl/ghc,sdiehl/ghc,sdiehl/ghc,ezyang/ghc,shlevy/ghc,ezyang/ghc,sdiehl/ghc,sdiehl/ghc