README updates

removing blurb about not supporting implicit dependencies - that's now fixed.  adding blurb about using shared schemes.
don't promote brew install with --HEAD

We want people to live on a supported version.
Colored TextReporter end output in red or green
Fix JSON-compilation-database to support "ProcessPCH++"

When project contains Objective-C++ code, the Preprocess can become ProcessPCH++
add unit test case for ProcessPCH++
Added option -simulator for specifying which simulator to launch, either
"iphone" or "ipad". Defaults to "iphone" which is the old behavior.
fix comment
arguments were misordered in -[Action valideOptions:...]

The method signuate was...

```
- (BOOL)validateOptions:(NSString **)errorMessage
       xcodeSubjectInfo:(XcodeSubjectInfo *)xcodeSubjectInfo
                options:(Options *)options;
```

... when it should have been ...

```
- (BOOL)validateWithOptions:(Options *)options
           xcodeSubjectInfo:(XcodeSubjectInfo *)xcodeSubjectInfo
               errorMessage:(NSString **)errorMessage;
```

errorMessage and options were swapped :-(
make Options return the XcodeSubjectInfo instance.

The way XcodeSubjectInfo was created was pretty funky.  -[XCTool run]
would alloc/init a XcodeSubjectInfo instance, but it would be unusable
at this point.  Then it would pass that instance to -[Options
validate...], which would fill in some important values in
XcodeSubjectInfo, at which point it would be usable.

This is horribly confusing, and it's actually still pretty bad, but this
is a little better.  Let's have -[Options validate...] return the
instance in a usable state.

Test Plan:
Tests still pass, and I can build/test manually.
remove the lazy load nature of XcodeSubjectInfo

XcodeSubjectInfo has a bunch of properties.  We used to lazily populate
thse properties whenever the first property was accessed.

This was pretty dumb and hard to reason about.

Test Plan:
Tests pass, and I can manually build/test things.
use ReportStatusMessage to indicate when loadSubjectInfo is working.

We used to do this inside of XcodeSubjectInfo, but if we pull it up to
Options, then XcodeSubjectInfo doesn't have to know about reporters.
Great.
a workspace must end .xcworkspace and a project must end in .xcodeproj

Lets add some validation to make sure these arguments look correct.

Test Plan:
Added some new tests.
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.