Use the optional custom javac if present to compile R.java files [part 1/2]

Summary:
Now that we allow using custom javac, we should use that everywhere in the code
base to compile any java code. This makes it so for the dummy R.java files that
are created per android library module.

The next part will do the same for the uber R.java files, which means
`AndroidBinaryRule` (which creates `UberRDotJava`) needs to be passed the path
to the custom javac.

Test Plan: sandcastle
Basic support for walkRelativeFileTree() in FakeProjectFilesystem.

Summary: I will keep adding more features as we need them for unit tests.

Test Plan: unit test
Eliminate the last android dependency from buck/java

Summary:
Not the cleanest solution, but works fine. Cannot be injected into the
test rule because you can only access the android target platform at the time
of execution through ExecutionContext.

Test Plan: unit tests pass
Check both the build rule and its buildable for `AbiRule`.

Summary:
Currently, new buildables that want to take advantage of the AbiRule optimization
in `AbstractCachingBuildRule` have to define a new `BuildRule` which implements
`AbiRule`. Given our plans to merge `BuildRule` and `Buildable`, it makes sense
to make the behaviour similar to `InitializableFromDisk`.

Test Plan: Updated
Use ProjectFilesytem.walkFileTree instead of DirectoryTraverser in AaptPackageResources.

Summary:
Less code. Avoids dealing with `File`<-->`Path`<-->`String` conversions.

Also easier to maintain test code.

Test Plan:
unit tests pass.

buck build instagram and verify that assets are included in the APK.
emit list of generated projects when generated separated projects

Summary:
Modified `SeparatedProjectGenerator#generateProjects` to return a list of
projects.

Modified `ProjectCommand` to print it out.

Test Plan:
Added a unit test to test the correct list is returned.

Manually tested wth `buck project` to see that ProjectCommand emits the file
name. ProjectCommand itself doesn't seem very amenable to unit testing.
Use the optional custom javac if present to compile R.java files [part 2/2]

Summary:
Depends on D1185232

Pass the optional path to custom javac to android binary rule builder, so that
the graph enhancer can pass it along to `UberRDotJava` which uses it to create
the javac step for compiling the R.java files.

Test Plan: sandcastle
Get rid of the android:r build rule now that buck/java no longer depends on android.

Test Plan: sandcastle
Add a helper method to run `buck build <target>` in integration tests

Test Plan: Converted a call site. Sandcastle.
Close zip file in ApkInspector.

Test Plan: sandcastle
Integration test to verify updating a drawable rebuilds `ResourcesFilter`

Test Plan:
sandcastle
Verified that the test fails with D1212206
Results Aggregation: Upload results on a per-test[-method] basis

Summary:
Add a second type of `com.facebook.buck.event.listener.ResultBuilder` that builds a `List<TestRun.Result>` with a new result per JUnit test (ie: test-method).

Test Plan: Run the graph tests, and check out the test console: {F7680737}
Fix various spelling mistakes/typos

Summary: https://github.com/facebook/buck/pull/98

Test Plan: Buildbot tests.
Rename `HasAndroidResourceDeps.HASHER` to `ABI_HASHER`.

Test Plan: sandcastle
IntelliJ 13.1 keeps thrashing this file

Test Plan: IntelliJ 13.1
Fix lint error *grumble grumble grumble*

Test Plan: zoidberg_bad
buck project with no arguments generates projects for all xcode_project_config rules

Summary:
Also change output to be relative paths instead of absolute, as is the
convention in intellij (also makes testing easier).

Test Plan:
Added integration test with 2 projects, and when run asserts that the list of projects
contains both projects. Did not check the contents or existence of actual files.
Update Buck Xcode file extension -> Xcode file type map

Summary:
In D1194036, Xcode decided to rewrite the extensions for a
few files in FBProvider's now-generated Xcode project.

This updates Buck's file extension -> file type map with all
the types I found in fbobjc. I found them with a crappy
Perl script:

P7127716

Test Plan: buck test --all
Fix unit tests in IntelliJ

Test Plan: IntelliJ
Change lastKnownFileType to explicitFileType in generated Xcode projects

Summary:
Xcode seems to enjoy rewriting the project file if we use
"lastKnownFileType" (see D1194036).

This diff changes to "explicitFileType", which I assume has the same
performance benefits but doesn't jump around randomly.

Test Plan:
ant jar, then in fbobjc, buck project //Libraries/FBProvider:project,
convert project with xcproj touch 2x, open in Xcode. Before, Xcode would
rewrite the project. Now, it doesn't.