Pass TraceSource through to Task.Catch() instead of global trace

This will mean exceptions observed by Catch() now will only be traced if the app is configured to trace the related TraceSource specifically.
- #3107
I look at that but figured that given it's only used internally by that type this approach is just so much easier. The other involves passing it through the ctors and then the dynamic delegate construction, blah blah, just not worth it.