Remove duplicated code from StubListener.
Add ExceptionInfo, a [Serializable] summary of an Exception including any inner exceptions.
FailResult exposes exceptions as a collection of ExceptionInfo summaries instead of the full original Exceptions.
Phase out FailResult extension methods PrimaryExceptionMessage() and PrimaryExceptionTypeName().
Inline and simplify the remaining FailResultExtensions.
ExceptionInfo can summarize many exceptions encountered in a single Case execution, giving the primary exception type, primary exception message, and a compound stack trace of all exceptions and their inner exceptions.
Deprecated FailResult.Exceptions is a collection of Exception objects.  ExceptionInfo can be constructed with a collection of Exception objects.
Test coverage for ExceptionInfo which summarize multiple exceptions.