Add source context to exceptions and analyzer warnings
support for user defaults (-SomeDefault=value) on command-line.

You can override some xcode settings like IDEBuildLocationStyle, or
IDECustomDerivedDataLocation by passing user defaults on the command
line to xcodebuild.  xcodebuild's man page documents this.

This add support for user default options and makes sure that xctool
doesn't barf when parsing -showBuildSettings output that includes user
defaults.

Test Plan:
Added some tests, and ran --

xctool \
  -project TestProject-Library/TestProject-Library.xcodeproj
  -scheme TestProject-Library \
  -configuration Debug \
  -sdk iphonesimulator \
  -arch i386 \
  ONLY_ACTIVE_ARCH=NO \
  -IDEBuildLocationStyle=DeterminedByTargets \
  build

... and verified that IDEBuildLocationStyle took effect and output
showed up under TestProject-Library/build instead of the normal
DerivedData location.

This close issue #57.
log more info when buildSettingsForFirstBuildable fails

We're seeing reports of this failing in issue #104.  Let's log some more
info so we can figure out what's going on.
phabricator reporter should display scheme name instead of project name.

I had been meaning to do this for a while since the scheme name is more
specific than the workspace/project name.

This also removes PhabricatorReproter's dependency on Options.

Test Plan:
Tests pass, manual testing works.
unnecessary #imports
removing Reporter's dependency on Options.

Big changes are coming for Reporters.  This will make things easier.
use PublishEventToReporters() and don't called handleEvent: directly.

a bunch of big changes coming for Reporters - this makes the migration
easier.
moving reporter type definitions into ReportTypes.h

This is going to make some Reporter changes easier.
moving ReportStatus* functions into their own file.

I'm trying to widdle down Reporter.[hm] to just the Reporter class so
that upcoming changes are easier.
moving PublishEventToReporters() to XCToolUtil.m

I'm trying to widdle Reporter.h down to just the Reporter class.  It's
going to make some upcoming changes easier.
-[Reporter reporterWithName:outputPath:options] doesn't need the options:

Reporter no longer dependes on Options
Reporter+Testing categories don't need to know about Options.

Reporters no longer depend on Options.
the -reporter option can now point at a reporter executable.

When -reporter references an executable, then xctool will launch that
reporter executable, pump the raw JSON event stream to its stdin, and echo back
whatever comes from the reporter's stdout.

This is the first step towards having reporters implemented outside of
xctool.

Tested by using -reporter /bin/cat ...

```
xctool -project
xctool/xctool-tests/TestData/TestProject-Library/TestProject-Library.xcodeproj
-scheme TestProject-Library -configuration Debug -sdk iphonesimulator
-arch i386 ONLY_ACTIVE_ARCH=NO clean -reporter /bin/cat
```
moving NSFileHandle+Print and FakeFileHandle to Common

We're going to use these in other projects, too.
new reporter executables for each of our reporter types.

This creates a new 'reporters' project, with a target for each of our
different reporters.

The new style reporter just reads JSON events from stdin, and writes
formatted events to stdout.

Each of the reporter classes and their tests have been copied over to
the new project.  Next we'll remove the old-style reporters from the
main project.

Test Plan:
Tests pass, manually testing looked good.
Reporter and ReporterTask have the same interface for publishing events.

This introduces the `EventSink` protocol which the old-style Reporter
and new-style ReporterTas both implement.  For both, we now use
`publishDataForEvent:` to publish events.

This also removes all instances where `handleEvent:` was called
directly.

This is going to make it easier to pull out the old Reporters entirely.
rename BufferedReporter -> EventBuffer

... and some other places that refer to buffered reporters.
-reporter must now reference a reporter executable.

... and -help will list reporters from `path/to/xctool/reporters`.

The old-style Reporter classes are still in the code, but there's no way
to invoke them.  They'll be removed in a later commit.
BuildTargetsCollector is an EventSink and no longer a Reporter

We're trying to kill 'Reporter' implementations in the 'xctool' project,
so this has to go.
kill RecordingReporter; using EventBuffer instead.

One step closer to removing Reporters from the xctool project.