Cut off inference for recursive mapped types
Cut off inference for recursive mapped types

Previously, when inferring to a self-referential (or otherwise recursive)
homomorphic mapped type from a source type that also has recursive
references, type inference would enter infinite recursion.

Now there is a more complex stack for mapped type inference. It mirrors
the existing symbolStack but (1) includes the source type and (2) is
passed through inferTypeForHomomorphicMappedType, which is actually
called outside of inferTypes, and so restarts the symbolStack cache
every time.

nojvek/TypeScript,alexeagle/TypeScript,donaldpipowitch/TypeScript,nojvek/TypeScript,SaschaNaz/TypeScript,kpreisser/TypeScript,Microsoft/TypeScript,Microsoft/TypeScript,nojvek/TypeScript,SaschaNaz/TypeScript,weswigham/TypeScript,microsoft/TypeScript,weswigham/TypeScript,minestarks/TypeScript,minestarks/TypeScript,kpreisser/TypeScript,minestarks/TypeScript,weswigham/TypeScript,Microsoft/TypeScript,basarat/TypeScript,basarat/TypeScript,alexeagle/TypeScript,microsoft/TypeScript,donaldpipowitch/TypeScript,kpreisser/TypeScript,kitsonk/TypeScript,RyanCavanaugh/TypeScript,SaschaNaz/TypeScript,nojvek/TypeScript,kitsonk/TypeScript,kitsonk/TypeScript,RyanCavanaugh/TypeScript,donaldpipowitch/TypeScript,basarat/TypeScript,alexeagle/TypeScript,donaldpipowitch/TypeScript,basarat/TypeScript,SaschaNaz/TypeScript,microsoft/TypeScript,RyanCavanaugh/TypeScript