Store Parallel.ForEachAsync exceptions from cancellation callbacks (#82434)
* Store Parallel.ForEachAsync exceptions from cancellation callbacks
If a cancellation callback erroneously throws an exception, make sure we store it into the list of exceptions used to complete the resulting task. In most cases, this just means we may not be returning _all_ exceptions when there are multiple. If, however, disposal of the enumerator throws an exception and a cancellation callback throws an exception and no exceptions were thrown from the loop body, without this change the task returned from ForEachAsync likely won't be marked completed.
* Update src/libraries/System.Threading.Tasks.Parallel/tests/ParallelForEachAsyncTests.cs