Split ExceptionInfo into separate CompoundException and ExceptionInfo classes, because ExceptionInfo had a confusing dual purpose of representing a group of exceptions as well as a single exception.
Move CompoundException to its own file.
Improve test coverage of CompoundExceptions, in the case that there is only a single exception with no secondary exceptions.
Rename variables based on their actual type.