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.