fix otest-shim crash that can happen with multiple threads

Summary:
This fixes the crashes found by @bgertzfield.  If tests end up spawning
threads that write to stdout or stderr, some bad things could possibly
happen...

1) the emitted JSON could get corrupted since there was no locking or
serialization there.

2) 'test-output' events could get written outside of the 'begin-test' &
'end-test' boundaries.

Let's setup a GCD queue to serialize all of our events.  We'll always
use dispatch_sync so we can be sure the event gets written.
(dispatch_async would work fine in the positive case, but if the tests
caused a crash, we could lose whatever blocks were in the queue)

Test Plan:
Made some tests that spawned ridiculous numbers of threads that
constantly wrote to stdout.  Observed that I could repro the crash
consistently before I applied this change, and then observed it went
away afterwards.
Fix dead store and correct the comment to reflect the actual behavior.
autorelease the Options objects.
Addresses Issue #17: 'begin-test & end-test events should include test class & method names.'
OCUnitCrashFilter synthesized events should include className, methodName

otest-shim now includes 'className' and 'methodName' fields in
'begin-test' and 'end-test' events.
make json-stream emit 'begin|end-ocunit' events, regenerating JSONStreamReporter-runtests.txt
adding Reporter+Testing, some categories to make reporter testing easier.
Reporter for JUnit

Squashed from https://github.com/facebook/xctool/pull/13

Close the file and nil the file handle reference
Cleanup and formatting per @fpotter
Addresses Issue #17: 'begin-test & end-test events should include test class & method names.'
Combine all test suites into a single file.
Fixes buggy XML encoding discovered by @pipelineoptika
Indentation, use Reporter+Testing
Create the intermediate directory if required
adding Known Issues to README
bump to v0.1.1
fixed error when doing -reporter SOME_REPORTER:somefile.txt

If you specified a file but no path (i.e. 'somefile.txt' rather than
'path/to/somefile.txt'), it would show an error...

ERROR: Failed to create folder at ''.

Tested with...

```
./xctool.sh -project xctool/xctool-tests/TestData/TestProject-Library/TestProject-Library.xcodeproj -scheme TestProject-Library test -reporter json-stream:/tmp/b/c/d.txt
```

and

```
./xctool.sh -project xctool/xctool-tests/TestData/TestProject-Library/TestProject-Library.xcodeproj -scheme TestProject-Library test -reporter json-stream:somefile.txt
```
bumping to v0.1.2
less NSTask faking, easier Options testing via Options+Testing

Options+Testing adds some categories for making Options validation
testing easier.  You no longer have to worry about fake tasks and the
ugly `ReturnFakeTasks` function for most Options testing - instead we
use a fake implementation of XcodeSubjectInfo that skips the NSTask
invocation when under test.
adding Common dir to hold shared code, moving Swizze functions there.

I need to use the same swizzle functions across multiple targets, so
lets stick them in this Common dir.

We're going to just include the source files themselves rather than
making a library out of them - our targets will be a mix of MRR, ARC,
and GC-code, and iOS / Mac, so linking a common library is not possible.
adding FakeTaskManager to make it easier to fake out NSTask invocations

This makes it easier to mock out NSTask calls.  This is the beginning of
a journey to kill ReturnFakeTasks() and TaskInstance().
make some XCToolUtil functions always invoke the NSTask under test.

We want these functions to always invoke the NSTask so that we can
properly test them.
make everything use FakeTaskManager instead of ReturnFakeTasks

This hopefully makes a bunch of our tests easier to follow.
no more FakeXcodeSubjectInfo in Options+Testing - use FakeTaskManager

This saves us from invoking real NSTasks for `XcodeDeveloperDirPath()`
or `GetAvailableSDKsAndAliases()`, so our tests run faster.
use shared schemes for TestProject-App-OSX