Null out CancellationTokenSource._timer on Dispose/Cancel (#20410)
We already Dispose the Timer in such cases, but we don't null out the field. That's generally fine, unless an errant CancellationToken is held onto somewhere that references the CancellationTokenSource, in which case it in turn may end up keeping the Timer alive and whatever its delegate/state reference, prolonging their GC unnecessarily. Minor, but good house keeping, as CancellationTokens can be used in a manner that makes them longer-lived than expected.