Implement an AbstractThrowingTestCase covering all exception scenarios

Needs documenting.
ThrowablesFactory: .addSuppressed() the Throwable argument on generation failure

We want the user to know at least where its lambda failed if the
RuntimeException instance cannot be generated. Still set the Throwable of
.invokeExact() as the cause, but also add the (lambda-issued) Throwable as a
suppressed exception so that the user knows what happened.