Delay instantiation of signature return type
Delay instantiation of signature return type

`getReturnTypeOfSignature` correctly handles an un-instantiated
signature, but `instantiateSignature` used to eagerly instantiate the
return type. This caused an infinite recursion in #16233.

Now `instantiateSignature` doesn't instantiate the return type, but
relies on `getReturnTypeOfSignature` to do it.

TukekeSoft/TypeScript,kitsonk/TypeScript,kitsonk/TypeScript,mihailik/TypeScript,Eyas/TypeScript,TukekeSoft/TypeScript,basarat/TypeScript,alexeagle/TypeScript,RyanCavanaugh/TypeScript,mihailik/TypeScript,chuckjaz/TypeScript,minestarks/TypeScript,mihailik/TypeScript,alexeagle/TypeScript,SaschaNaz/TypeScript,weswigham/TypeScript,minestarks/TypeScript,donaldpipowitch/TypeScript,Microsoft/TypeScript,kpreisser/TypeScript,SaschaNaz/TypeScript,SaschaNaz/TypeScript,donaldpipowitch/TypeScript,Eyas/TypeScript,microsoft/TypeScript,SaschaNaz/TypeScript,synaptek/TypeScript,chuckjaz/TypeScript,Eyas/TypeScript,kitsonk/TypeScript,weswigham/TypeScript,basarat/TypeScript,TukekeSoft/TypeScript,mihailik/TypeScript,Microsoft/TypeScript,microsoft/TypeScript,basarat/TypeScript,Microsoft/TypeScript,nojvek/TypeScript,synaptek/TypeScript,nojvek/TypeScript,minestarks/TypeScript,alexeagle/TypeScript,donaldpipowitch/TypeScript,basarat/TypeScript,synaptek/TypeScript,synaptek/TypeScript,microsoft/TypeScript,nojvek/TypeScript,weswigham/TypeScript,chuckjaz/TypeScript,chuckjaz/TypeScript,kpreisser/TypeScript,kpreisser/TypeScript,RyanCavanaugh/TypeScript,nojvek/TypeScript,Eyas/TypeScript,donaldpipowitch/TypeScript,RyanCavanaugh/TypeScript