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
Since the `traceMethod` is always `(format, args) => [Client.IConnection].Trace(TraceLevels.Messages, format, args)` maybe we should take an `IConnection` instead of an action.