The tree output format should be opt-in, and we should default to just empty-line-separated leaf errors.
For leaf errors, multi-error parent just provides an additional piece of the error trace, so there will be some repetition of frames between those errors.
This also ties into #71: we can expose a simple iterator func(error, []frame) with the understanding that parent/child relationships don't need to be exposed.