Revive pull request #1348: "Issue 9882 - Implement a "tee" style InputRange...

...so that a function can be called during a chain of InputRanges."
It's checking for a template lambda. In the case where the user wants to use a function as the output range for tee, a template lambda won't work, so I have to check for it and if it's a template lambda, instantiate it with the type of inputRange.front. 

Template names return void because they don't have a type, and I couldn't think of a better way to differentiate because this doesn't work:

    assert(is(fun == template));

Somebody submitted a PR awhile ago for an isTemplate trait, but it hasn't been pulled yet, so once that gets in I'll look at using that instead.