setting the gotUncaughtSignal flag in the OCUnitIOSAppTestRunner

Summary: The OCUnitIOSAppTestRunner always set the gotUncaughtSignal argument to false, but this flag is used to determine if handleEarlyTermination should be called.

Test Plan:
- Run test cases on the iOS simulator that cause the process to crash
- Observe that the iOS simulator crashes, but the output counts any not run tests as "failures" included in the overall count
- Trigger failures in the installation process, observe that tests that haven't been run are still included.

Refactor of gotUncaughtException -> gotError

Cleaned up some testing code.

gotError -> testsNotStartedOrErrored
in the text reporter, print a new line before the failure summary
when calling iPhoneSimulator.platform/usr/bin/sim, use --adopt-pid

This fixes the bug where we can't properly detect when a test run has
crashed (because the NSTask.terminationReason always indicated a normal
exit instead of uncaught signal).

This means - when a test crashes - we'll properly synthesize the events
for tests that never ran.
sorting by name in all the projects.
in MakeTemporaryDirectory(), don't abort() if we're running under test.
in OCUnitCrashFilter, move things out of the setUp method.
use EventBuffer instead of `-[TestUtil getEventsForStates:withBlock:]`

This way no processes, temp files, or blocks are involved.
rename OCUnitCrashFilter -> TestRunState

This is a more fitting name.  It used to be called crash filter, because
it would only emit events in the event of a crash.  It does a lot more
than this now.
more autorelease instead of release; don't nil out the test suite.

It's less error prone if we just autorelease at the top instead of
having to remember to release at the bottom.

Also, we don't want to nil out the test suite - we'll need that
information later.
TestRunState: some ivars not released, or released in wrong place.
using SelectEventFields() instead of assertEvents:containsEvents:

We're going to use this function elsewhere.
fix bug where test output would appear missing if it didn't end in \n

We had a bug where - if the test output didn't have a trailing newline -
we'd end up drawing the divider line overtop of the last line of test
output.
in -[TestRunState collectCrashReports:], don't wait 10s if under test.

We used to expose a way to set the wait time from inside of tests, but
we have a whole bunch of tests that call TestRunState indirectly, and
there's not an easy way for them to override the timeout.

If under test, just don't wait.
TestRunState: re-working how we annotate crashing / not run tests

All test runs are now porcessed through TestRunState, even if we have no
reason to believe they crashed with an uncaught signal.  This means that
if the test output gets interrupted for whatever reason, we'll generate
events for the missing portion.

The output annotations are mostly the same as they were before with 1
difference.  If the tests crash before a test runs, or in between tests,
we no longer shove the crash reports in the next test.  Instead, we
always create a placeholder test to hold info on the crash.
removing the workaround to say tests passed when the bundle was empty.

This is pretty much dead code now.  If a bundle has no tests, then
otest-query will return nothing and we'll just skip the bundle.  We'll
never try to run it.
TestRunState was never getting released in OCUnitTestRunner

Actually, this doesn't need to be an ivar.
remove the "Tests did not run." prefix from test runner error messages.

TestRunState will take care of adding this prefix.
we no longer care about otest's exit status or if it had uncaught signals.

We used to only say a test bundle passed if the exit status of
otest/xctest was zero.  And, we'd only do the post-processing of test
events (via OCUnitCrashFilter/TestRunState) if we noticed an uncaught
signal from the child process.

This had a couple problems:  1) we never had a 100% reliable way to
capture the exit status of iOS application tests since the simulator
launched the process (not us);  2) if test output stopped mid-stream but
the test runner didn't crash because of an uncaught signal, we would not
emit all the fake events to pretend the test run finished.

We now run everything through TestRunState, all the time.  Only if
TestRunState indicates everything passed do we say a test bundle passed.
OCUnitTestRunnerTests: less repitition in creating OCUnitTestRunners
reducing some code duplication in OCUnitTestRunnerTests

Also, our tests are going to need a reference to the OCUnitTestRunner in
a coming change.