Enable generic NamedTuples (#13396)
Fixes #685
This builds on top of some infra I added for recursive types (Ref https://github.com/python/mypy/pull/13297). Implementation is based on the idea in https://github.com/python/mypy/pull/13297#issuecomment-1211317009. Generally it works well, but there are actually some problems for named tuples that are recursive. Special-casing them in `maptype.py` is a bit ugly, but I think this is best we can get at the moment.