Issue title: Type variable bound to generic subclass cannot be assigned to type variable bound to superclass
 Issue body: **Describe the bug**
Pyright says:
```python traceback
  /home/neil/src/efax/a.py:19:64 - error: Type "TEP@TransformedNaturalParametrization" cannot be assigned to type variable "EP@NaturalParametrization"
    Type "TransformedExpectationParametrization*" is incompatible with bound type "ExpectationParametrization" for type variable "EP@NaturalParametrization"
      "TransformedExpectationParametrization*" is incompatible with "ExpectationParametrization"
```

I'm not sure, but this seems incorrect to me.  The type variable TEP is bound to `TransformedExpectationParametrization[Any]`, which is a subclass of `ExpectationParametrization[Any]`, which is the bound of `EP`.  So I'm surprised that TEP cannot be assigned to EP.

**Screenshots or Code**
```python
from typing import Any, Generic, TypeVar

EP = TypeVar('EP', bound='ExpectationParametrization[Any]')
TEP = TypeVar('TEP', bound='TransformedExpectationParametrization[Any]')
NP = TypeVar('NP', bound='NaturalParametrization[Any]')
TNP = TypeVar('TNP', bound='TransformedNaturalParametrization[Any, Any, Any]')

class NaturalParametrization(Generic[EP]):
    pass

class ExpectationParametrization(Generic[NP]):
    pass

class TransformedExpectationParametrization(ExpectationParametrization[TNP], Generic[TNP]):
    pass

class TransformedNaturalParametrization(NaturalParametrization[TEP],
                                        Generic[NP, EP, TEP]):
    pass
```

**VS Code extension or command-line**
pyright 1.1.221

 Comments: 
 Comment 0: The problem is that you have a circular dependency in your type definitions that pyright cannot resolve.

Consider the following:
```python
MyTypeAlias1: TypeAlias = "MyTypeAlias2"
MyTypeAlias2: TypeAlias = "MyTypeAlias1"
```

We can probably all agree that this is unresolvable because the types refer to each other.

What you're doing here is similar. The `TransformedNaturalParameterization` class hierarchy depends on the TypeVar `TEP` which is bound to class `TransformedExpectationParametrization` whose class hierarchy depends on the TypeVar `TNP` which is bound to class `TransformedNaturalParameterization`. You'll need to find some way to break that circularity.

I previously had in place code that did a better job detecting and reporting these circularities, but I removed it because it was resulting in false positives in some cases where circularities were tolerable. I should perhaps try to figure out a more surgical detection mechanism so the cause of problems like this are more clear.
 Comment 1: Thanks for taking a look!  I figured it was probably my fault, but wasn't sure.  I'll think about how to fix this.
{'source': 'GithubIssues', 'repo_name_with_owner': 'microsoft/pyright', 'issue_id': 1136692117, 'repo_stars': 5035.0}