The restriction to distinct type variables, and the resulting issues
with unification, apply equally to instances for applied type
constructors. This disallows e.g. writing a Monoid instance for (a ->
a) directly without a newtype wrapper, not that we'd want to do that
anyway.