Visible forall in class methods
## Summary
currently it isn't possible to change the visibility of a quantified type in a class method
a class method with `forall tv ->` will introduce a new `tv` visibly quantified type variable named `tv` even if the class definition contains a `tv` type variable shadowing the existing one and making the method be ambigously typed
## Steps to reproduce
```haskell
class Bits b where
bitSize :: forall b -> Int
```
## Expected behavior
actually it is somewhat unclear, a `forall tv.` also introduces a new variable shadowing the one from the class head but in a constructor the types from the data declaration aren't in scope so you could use `forall tv ->` if it weren't explicitly disallowed. Basically there should be a way to define a method which works the same as
```haskell
class Bits b where
bitSize :: forall a -> a ~ b => Int
```
without introducing a new variable, also in the future assuming `foreach tv.` and `foreach tv ->` are introduced we probably should be able to control how a class variable is quantified in each method
## Environment
* GHC version used: The Glorious Glasgow Haskell Compilation System, version 9.10.1
Optional:
* Operating System: Linux
* System Architecture: x86_64
issue