Add overloads for Function.apply/call/bind
Add overloads for Function.apply/call/bind

The new overloads use this types to specify the return type of these
functions as well as the type of `thisArg`.

kitsonk/TypeScript,nojvek/TypeScript,synaptek/TypeScript,ziacik/TypeScript,alexeagle/TypeScript,alexeagle/TypeScript,Microsoft/TypeScript,microsoft/TypeScript,erikmcc/TypeScript,Microsoft/TypeScript,TukekeSoft/TypeScript,Eyas/TypeScript,jeremyepling/TypeScript,SaschaNaz/TypeScript,erikmcc/TypeScript,TukekeSoft/TypeScript,minestarks/TypeScript,ziacik/TypeScript,mihailik/TypeScript,mihailik/TypeScript,plantain-00/TypeScript,jwbay/TypeScript,vilic/TypeScript,SaschaNaz/TypeScript,nojvek/TypeScript,thr0w/Thr0wScript,kpreisser/TypeScript,jwbay/TypeScript,thr0w/Thr0wScript,erikmcc/TypeScript,nojvek/TypeScript,vilic/TypeScript,Eyas/TypeScript,plantain-00/TypeScript,DLehenbauer/TypeScript,kpreisser/TypeScript,DLehenbauer/TypeScript,chuckjaz/TypeScript,TukekeSoft/TypeScript,jeremyepling/TypeScript,microsoft/TypeScript,basarat/TypeScript,donaldpipowitch/TypeScript,kitsonk/TypeScript,microsoft/TypeScript,RyanCavanaugh/TypeScript,synaptek/TypeScript,Eyas/TypeScript,vilic/TypeScript,plantain-00/TypeScript,jeremyepling/TypeScript,SaschaNaz/TypeScript,donaldpipowitch/TypeScript,donaldpipowitch/TypeScript,DLehenbauer/TypeScript,chuckjaz/TypeScript,kitsonk/TypeScript,chuckjaz/TypeScript,weswigham/TypeScript,jwbay/TypeScript,ziacik/TypeScript,kpreisser/TypeScript,basarat/TypeScript,mihailik/TypeScript,Microsoft/TypeScript,plantain-00/TypeScript,RyanCavanaugh/TypeScript,donaldpipowitch/TypeScript,basarat/TypeScript,minestarks/TypeScript,synaptek/TypeScript,weswigham/TypeScript,erikmcc/TypeScript,minestarks/TypeScript,SaschaNaz/TypeScript,alexeagle/TypeScript,thr0w/Thr0wScript,Eyas/TypeScript,basarat/TypeScript,jwbay/TypeScript,weswigham/TypeScript,chuckjaz/TypeScript,RyanCavanaugh/TypeScript,thr0w/Thr0wScript,DLehenbauer/TypeScript,ziacik/TypeScript,mihailik/TypeScript,nojvek/TypeScript,synaptek/TypeScript,vilic/TypeScript