Factor out the TemplateInstatiator class into its own file

This class implements type transformations for template patterns.

I am not sure why this class was internal only to SemaTemplateInstantiate.cpp - I haev factored it out, so it can be used by other code that requires type transformations.

At some point I will have to check with cfe-dev whether this was a good thing to do - for now, lets see if it proves useful ...