Rerun tests several times if simulator fails to start. Log simulator error.

Sometimes simulator or test host app fails to run. Let's try several times to run before reporting about failure to callers. Before each attempt we are killing simulator.
Also we are now logging error which simulator returns in such cases.
Merge pull request #351 from facebook/nekto/rerun_tests_if_fails

Rerun tests several times if simulator fails to start. Log simulator errors.
Refactor test suite event state to support errored tests and publish full statistics to reporters.
Publish suite events to reporterts in OCTestSuiteEventState and test events in TestRunState rather then in OCUnitTestRunner.
Continuer running tests after one of the tests crashed.