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