Unhelpful message when DerivingVia cannot coerce due to a nominal type variable and constructors out of scope
## Summary
## Steps to reproduce
```haskell
{-# LANGUAGE DerivingVia #-}
{-# OPTIONS_GHC -Wno-missing-methods #-}
module Bug where
import Control.Monad.Trans.Reader(Reader)
import GHC.Generics (Generically(Generically))
class MyClass a where
foo :: Reader () a
newtype T = MkT { unT :: () }
deriving MyClass via (Generically T)
instance MyClass (Generically a)
```
raises:
```
src/Bug.hs:12:12-18: error: [GHC-18872]
• Couldn't match type ‘Generically T’ with ‘T’
arising from the coercion of the method ‘foo’
from type ‘Reader () (Generically T)’ to type ‘Reader () T’
• When deriving the instance for (MyClass T)
|
12 | deriving MyClass via (Generically T)
|
```
But it can work when bringing `ReaderT`'s constructor in scope:
```diff
-import Control.Monad.Trans.Reader(Reader)
+import Control.Monad.Trans.Reader(Reader, (ReaderT(ReaderT)))
```
## Expected behavior
A more helpful error message guiding me into considering that
the coercion fails due to `a` having a `nominal` role in `Reader a`,
and then that this `nominal` role can be bypassed
when bringing the relevant constructor in scope.
I initially stumbled upon that problem not with `Reader` but with [`Database.SQLite.Simple.RowParser`](https://hackage.haskell.org/package/sqlite-simple-0.4.19.0/docs/src/Database.SQLite.Simple.Internal.html#RowParser),
and it took me 1h to understand the coercion failed because `StateT` imposed a `nominal` role on `RowParser`'s `a`,
then another 3h to understand why my minimal reproducer was not reproducing the problem:
because being self contained in a single `module`, the constructor was always in scope.
Even though I was specifying a `nominal` role manually,
always having the constructor in scope was rendering that role annotation useless to reproduce the error.
I did read the [relevant page of the user guide](https://ghc.gitlab.haskell.org/ghc/doc/users_guide/exts/roles.html)
multiple times, but it did not help me to understand that problem:
it doesn't talk about scope, constructor, external/internal like the wiki does.
It's only after reading the [relevant page of the wiki](
https://wiki.haskell.org/GHC/Coercible#Using_newtypes_internally_and_externally_differently)
that I began to have a clue about what was going on.
## Environment
* GHC version used: 9.6.6
Optional:
* Operating System: NixOS 25.05
* System Architecture: Linux x86_64
issue