Save all exceptions raised in a test

By default SenTestRun will log every exception raised, not just the
first one. otest-shim will now send all exceptions to the reporters.
Note that often only the first exception is useful, so the reporters
continue to only display the first exception.
Split concept of test failures versus test errors

In the current version of xctool there is no separation of tests that
fail (an assertion fails) versus tests with errors (a non-assert
exception is thrown). This change splits non-passing tests into the two
catagories.

Note that since we now keep track of the number of passes manually
rather than rely on [SenTestRun testCaseCount] the total number of tests
reported will be the number of tests actually run, not the number of
tests configured. It could be argued that the test error count should
also include the number of tests configered but not run, but for now it
doesn't do that.
Emit output for all tests, even those that didn't get to run

Previously if a test or test suite crashed then none of the tests after
that one get to run. This means that the events never get outputted to
the reporters, and so they don't even know the tests exist. This causes
confusing results where a crash causes the existence of tests to be
hidden.

This commit fixes the situation with a bit of a architectual change.
OCUnitTestRunner becomes a reporter itself. As tests are executed it
tracks the state via the OCEventState subclasses. If at any point the
execution of a test suite fails we can use these state classes to emit
test events for the remaining tests and to handle any remaining events
that need to be emitted.