Add XCVersionGroup PBXReference to support editing xcdatamodeld files in generated projects.

Summary:
Versioned Core Data model files added to BUCK generated projects cannot be edited because they're added as PBXFileReference instead of XCVersionGroup.
This adds a PBXReference subclass to represent XCVersionGroup, and adds logic to generating them to ProjectGenerator.
Fixes T4335882

Test Plan: Run new tests, try to generate Apps/Tango project and edit Core Data model in TangoLib/Resources
Easy: Enable @SuppressWarnings("checkstyle.foo")

Summary:
In D1405028, I imported some open-source which fails
checkstyle. This allows us to use

  @SuppressWarnings({"checkstyle.foo","checkstyle.bar"})

to disable particular checkstyle warnings in Buck.

Test Plan: Used @SuppressWarnings("checkstyle.foo") in D1405028.
Allow step execution to be interrupted.

Summary:
Previously step processing occured uninterruptibly, which
meant that it could not be cancelled when a client disconnection was
detected. This change makes step execution interruptible so that
client disconnection can correctly cancel command execution.

Test Plan: buck test --all
Remove redundant catch block.

Summary:
Now that
BuildCommand.executeBuildAndPrintAnyFailuresToConsole throws
IntteruptedExceptions it no longer needs to catch them.

Test Plan: buck test --all
Remove redundant annotation.

Test Plan: buck test --all
Merge build rules and buildables.

Summary:
Reverse take-over of `BuildRule` by `Buildable`.

Changes:
- `Description.createBuildable(BuildRuleParams, Arg)` is now
  `Description.createBuildRule(buildRuleParamsWithDeclared, extraDeps,
  buildRuleResolver, arg)` and is additionally responsible for graph
  enhancement. As a result, we no longer use the `DependencyEnhancer`
  interface. Descriptions which do not perform graph enhancement
  basically pass
  `buildRuleParamsWithDeclaredDeps.copyWithAdditionalDeps(extraDeps)` to
  the build rule that they create. It's unfortunate that descriptions
  need to track this, but I found it hard to avoid this because we no
  longer have a `DescribedRule` that wraps a `Buildable`. However, with
  graph enhancement being done prior to constructing the build rule,
  rule objects are now immutable.
- java_library() used to stash union(declaredDeps, exportedDeps) and use
  that for computing transitive classpath entries (because we don't want
  to include provided deps). This was exposed as
  `DefaultJavaLibrary.getDeps()` which now clashes with
  `BuildRule.getDeps()`. As a result, I defined
  `JavaLibrary.getDepsForTransitiveClasspathEntries()`. Earlier this
  value was strictly `union(declaredDeps, exportedDeps)`; now it's
  `union(declaredDeps, inferredDeps) - providedDeps` which I feel is
  correct.
- Deleted `DescribedRuleBuilder` and `DescribedRuleFactory` which were
  anyways not being used (to get buck compiling). Also the relevant unit
  tests.

Test Plan:
buck test --all
sandcastle
Remove now dead Android*TransitiveDependencies code.

Summary: redparty

Test Plan: buck test --all
Delete the `Buildable` interface and everything associated with it.

Summary: RIP

Test Plan: buck test --all
Allow StepRunner processing to be interrupted.

Summary:
Add a shutdownNow() method to the StepRunner API to allow
step processing to be interrupted.

Test Plan: buck test --all
Generate overflow events on Watchman errors and interruptions.

Summary:
Whenever Watchman event processing is interrupted or
encounters errors events may be lost. These changes generate overflow
events in these cases so that subscribers are aware that events have
been lost and can take remedial action, normally by clearing caches.

Test Plan: buck test --all
Fix a warning in the ant build.

Summary:
We were using `ListenableFuture` without a template type, which caused a
rawtype warning/error.

Test Plan: Hope the build turns green.
Start parsing @repo syntax in BuildTargetParser.

Summary: Too many constructors in BuildTarget. Time for BuildTarget.Builder? *sigh*

Test Plan: This field isn't used anywhere yet, but I've added a new unit test.
Add option to generate Xcode projects read-only

Summary:
In D1401943, I made generated Xcode projects read-only. We may
not quite be ready for that in fbobjc, so this diff makes that behavior
optional (defaulting to off).

I added both a command-line parameter and a .buckconfig parameter.

Test Plan: Unit tests updated.
Update our build-tools version to fix Travis.

Summary:
Google has moved zipalign into build-tools, so our build is failing without a
recent version of build-tools.

Test Plan:
Run the travis install commands on my own Ubuntu VM. Confirm in particular that all
the Android SDK packages get installed, and then run `ant clean test`.