subliminal-instrument.

A wrapper around `instruments` which runs an application with
the Subliminal instrument attached and formats the output of that instrument.

`subliminal-instrument` accepts the same arguments as `instruments` apart
from the template argument (`-t`).

In this first commit, `subliminal-instrument` just launches instruments,
without yet processing its output.
`subliminal-instrument` processes `instruments`' output in real-time.

That is, `instruments` is no longer permitted to log directly to `stdout`,
but rather `subliminal-instrument` reads its output as it is written
and then re-prints the log messages.

In subsequent commits, this will allow `subliminal-instrument` to
modify `instruments`' output.
Subliminal's logs are now parsed into event dictionaries, to be handled by reporters.

There is currently only one reporter, which logs its messages to `stdout` and `stderr`.
Eventually, `subliminal-instrument` will allow for multiple reporters, to be configured
by options to the executable.
Ensure that `instruments` exits when `subliminal-instrument` does.
Suppress a warning issued when using `ps` on OS X 10.8.

See http://openradar.appspot.com/11894054.
Subliminal now exports `SLLogger` as part of a framework.

For consumption by `subliminal-instrument`, so that the latter can directly test
its parsing of the former's output.
Subliminal logs uncaught exceptions using a dedicated log method.

So that uncaught exception logging may be tested directly.

The current test and test case are no longer logged as part of the
uncaught exception message. Saying that the exception occurred
"during" the test might imply that the exception occurred as a result
of the test (rather than in the application while the test was ongoing);
such information can be deduced from the logs prior to the exception;
and this reduces the state for the test controller and tests to maintain.
Allow Xcode to make a change to Subliminal's project file.
subliminal-instrument parses the status of the tests from log messages.

subliminal-instrument is able to test parsing the output of Subliminal
directly by importing `SLLogger` and evaluating its output JavaScript
to yield the messages that would be logged to UIAutomation.
subliminal-instrument adds the current test and test case to all events.

So that reporters do not have to recover this information themselves
from the events.
Bracket errors, failures, debug, and default messages within their tests/test cases.

Logs will now look like:

    Tests are starting up...
    Focusing on test cases in specific tests: SLKeyboardTest,focus_SLPopoverTest_iPad,focus_SLDeviceTest,focus_SLElementStateTest.
    Testing started.
        Test "SLKeyboardTest" started.
            "focus_testCanMatchKeyboard" started.
--------------------------------------------------------------------------------
And now, a short interlude...
Unknown location: Unexpected exception occurred ***NSInternalInconsistencyException*** for reason:
------------|-------------------------------------------------------------------
            "focus_testCanMatchKeyboard" failed unexpectedly.
Factor the mechanics of report writing out of the `SITerminalReporter`.
Better indicate test case status.
`SITerminalStringFormatter` converts XML markup to ANSI escape sequences.

To make it easier to format strings for the terminal.
`SITerminalStringFormatter` now formats certain empty tags as unicode characters, with ASCII fallbacks.
`SITerminalReporter` pretty-prints its logs if capable.

Using colors (ANSI escape sequences) and Unicode characters,
as supported by the environment and `stdout`.
`subliminal-instrument.sh` dynamically builds and runs `subliminal-instrument`.
`subliminal-test` uses `subliminal-instrument` to format `instruments`' output.
Ensure that `subliminal-instrument` will exit if/when `subliminal-test` is killed.
Update the Rakefile's documentation to reflect the supported test SDKs.