Revert "Revert "Make the JUnitStep use Paths to represents paths""

Summary:
This reverts commit b6584a3846376d3c91d7bee7d02f827ff6b359d3.

Test Plan: yolo1
Remove unused targets and supporting scripts

Summary:
We can now get the same results using either the buck_extension rule or by using
provided_deps.

Test Plan: buck test --all
Output a useful error message if a genrule relies on a location that's null.

Summary:
When using a genrule, it's possible to use the "$(location :target)" construction in
order to get the output of a build rule. This is fine, unless that rule happens to
have no output. In this case, throw a meaningful error message rather than an NPE.

Test Plan:
Add a test
buck test --all
Introduce flavours

Summary:
Surface the fact that rules can have flavours, even if they're not yet directly addressable.

Note: using the US spelling of flavour in code. Some sort of medal for the mental anguish this
causes would be Really Nice.

Test Plan: Added extra tests, ran them.
docs: Fix ABI/API confusion on "what makes buck so fast" page.

Summary:
Closes #115

Also added missing <p> tags.  The paragraphs without a leading <p>
were smooshed together.

Test Plan: Visually checked result with "soyweb-local.sh" server and Chrome.
Revert "docs: Fix ABI/API confusion on "what makes buck so fast" page."

This reverts commit 6243308a434305096ed91b0b5c764c46e5e734c8.

Going to reland this with the correct author.
docs: Fix ABI/API confusion on "what makes buck so fast" page.

Summary:
Closes #115

Also added missing <p> tags.  The paragraphs without a leading <p>
were smooshed together.

Test Plan: Visually checked result with "soyweb-local.sh" server and Chrome.
[ios] Allow project to specify its own asset catalog build script

Summary:
@bhiller noted that using asset catalogs would require engineers to run buck
project upon checkout before being able to build. At this time, this is not
necessary in fbobjc and should remain unnecessary until all of the repository is
converted.

Test Plan:
Add .buckjavaargs to set the new system property in fbobjc buck invocations and
see projects using apple_asset_catalog create targets with a reference to the
custom build script.
Kill any subprocess created by a shell step on InterruptedException.

Summary:
@msimpson reported that "Ctrl-C-ing buck test --debug with buckd leaves the
port bound forever". The reason that happens is because `JUnitStep` which runs
tests is a `ShellStep` which basically creates a new subprocess to run a shell
command. This fixes the issue by destroying subprocesses after catching an
`InterruptedException`.

Test Plan:
buck test --all

Make sure NO_BUCKD is unset.
buck test --debug test/com/facebook/buck/rules:rules
Attach debugger in IntelliJ and set a debugger. As the breakpoint is hit,
Ctrl-C the buck test command.
Check that `lsof -i :5005` returns empty results.
[ios] Fix build phase generation when using custom asset compilation script

Summary:
The previous change to allow a custom asset catalog compilation script was not
tested properly. Buck still placed its own compilation script in an output
directory. The reference to the script in the project was also incorrect.

Test Plan:
Migrate a project to use apple_asset_catalog. Verify buck does not place its own
compilation script anywhere. Build the resulting project and verify the assets
are placed in the correct place.
Add vim .swp files to gitignore.

Summary: Very annoying when working on the bootstrap scripts.

Test Plan: Edit bin/buck in vim, notice git status doesn't list bin/.buck.swp file in status.
Pass the correct client environment to DefaultPropertyFinder.

Summary:
In order to make the use of the Buck daemon transparent, Buck needs to
use the process environment when running as a single process and the client
environment sent by Nailgun when running as a daemon. These changes extend
DefaultPropertyFinder to accept an environment when it is constructed and pass
the correct environment to instances when they are created.

Test Plan: buck test --all
Fix lint errors and green the build. No logical changes.

Summary: Previous commits have introduced lint errors. Fix them

Test Plan: ant lint && arc lint
Introduce a strong type for Flavor

Summary:
Being able to use a Flavor as a key in a Map turns out to be useful. And we like our
strong types.

Test Plan: buck test --all
Added EnumTypeCoercer.

Summary: Added EnumTypeCoercer. Not wired into the two examples of why it would be nice: need some advice on how to do that. But the component works.

Test Plan: See two new tests in TypeCoercerTest.java
Use client environment when setting up ShellStep sub-processes.

Summary:
Represent client environment as ImmutableMap and use it instead of the
process environment when setting up sub-processes in ShellStep.

Test Plan: buck test --all
Disable test that fails when inotify watch limit reached.

Summary:
The DaemonIntegrationTest is run on the CI servers, which also have a bunch of other work
happening on them at the same time. This results in us bumping into the limit of inotify
watches, causing the CI builds to constantly fail. This reduces their value to us.

Temporarily disabling the failing test until we get a fix in place.

Test Plan: CI server presubmit run.
Fix a linting error. No logical changes.

Summary: There's a lint error. This fixes it.

Test Plan: ant clean default compile-tests lint && arc lint
Only generate the src-zip for gen_aidl

Summary:
Now that we've removed usages of genfile() when referring to the output of genaidl,
we can switch to only generating source jars.

Test Plan: buck test --all
Add a new 'pre-checkin' target to help keep checkins clean.

Summary:
Adds the steps required to make sure that the code and tests compile cleanly via ant,
since buck itself is a lot more forgiving.

Test Plan: ant pre-checkin