ensure consistent exception handling when running tests

This ensures exceptions raised when running test teardown are handled
the same as exceptions raised when running the setup/test itself.
Before any fails generated in the teardown wouldn't be captured.
Error results were being captured in teardowns but this behavior
was not tested explicitly.

This also adds `SignalException` handling when running tests.  This
allows a test suite run to be interrupted (previously this was inter
preted as an error result.