angular: split ITranscludeFunction out of ITemplateLinkingFunction

My previous change updated the interface of the transclude function to more closely match its actual signature.  However, the same interface was also being used as the return value of $compile, which in fact has a similar but distinct signature.  (In particular, the function returned by $compile can take a single scope argument, while the transclude function cannot.)  This change splits the two interfaces into separate declarations, so their different signatures can be captured correctly.

I also used the new ITranscludeFunction interface in the signatures for the "compile" and "link" functions in directive declarations, and I made use of IAugmentedJQuery in a few more places where it is warranted.