Handle encoding failures on writing test results

It is possible for an exception's message to contain text which is in an
encoding not supported by the output IO of Minitest's SummaryReporter.
In these cases Minitest aborts on the encoding error without show any
individual test results.

This commit changes SummaryReporter to output individual test results in
a more cautious way to handle those errors. Failure on one result won't
impact showing further failure results. A fallback message is
constructed which, while lacking the original error message, at least
indicates the test and location of the failure.