Add an integration test for "genrule() should fail if any command fails".

Summary:
Make sure that if a genrule's 'bash' command contains a failing
command that the genrule fails.

Test Plan: `GenruleFailingCommandIntegrationTest`
Move common class file utilities from com.facebook.buck.dalvik to com.facebook.buck.java.classes.

Summary: Straight refactoring.

Test Plan: Sandcastle builds.
Make 'buck project' not process annotations by default.

Test Plan: unit test, buck project, buck project --process-annotations
Fix test caching behavior of Buck.

Summary:
Since we do not zip the test output with the TestRule's output jar,
we would incorrectly report test results if we have a cache hit for
the rule's output.

CachedTestIntegrationTest was supposed to catch this, but it had a bug
where it was always running tests regardless, since it was looking for the
xmls in the actual source directory instead of the JUnit temp directory.

To fix this, I write the rule key of the rule to it's output directory, and
read it later to validate the output against the current rule key while
checking for cached outputs.

Test Plan:
CachedTestIntegrationTest is green.

On a test project with caching enabled :

1.) Run tests and make sure they are green.
2.) Introduce a breaking change (`assertTrue(false)`), and the test will be red.
3.) Revert the change. Make sure tests run again and they are green.
4.) Rerun the test without any change. They do not run again but display are
    reported as Green.

(I verified (4) by observing that I don't see TESTING <target-name> in the
output)

On a clean master (3) would report the test as still failing.
Distinguish between cached and non-cached test runs.

Summary:
Display in the results if a test was read from the cached results or not.

Test Plan:
CachedTestRunReportingIntegrationTest is green.
Fix Buck for empty test rules.

Summary:
If a test rule is empty, we do not create the rule key file, since there
is no test ouput in this case.

Test Plan: Integration test was failing without fix, it passes with the fix.
Replace com.facebook.buck.util.Paths.getParentPath.

Summary:
Replace com.facebook.buck.util.Paths.getParentPath with
java.nio.file.Path.getParent.

Test Plan:
Ran JUnit tests: com.facebook.buck.util.PathsTest. Ran 'ant clean
test'.
Add unit test support of IntelliJ plugin.

Summary:
By double-clicking the test target listed in the target list,
unit test will run.

Also add a button "Test all".
Show incremental progress of unit test.

Summary:
By running a unit test, you can see the progress of
the unit test interactively in the message window.
followlinks in os.walk calls in buck.py to support builds with symlinks.
Start removing Paths.normalizePathSeparators.

Summary:
Starting to remove Paths.normalizePathSeparators. It seems like a
PathUtils class will still be needed, however.

Test Plan: Ran AndroidBinaryRuleTest JUnit tests. Ran 'ant clean test'.
Introduce CopyStep(Path, Path).

Summary:
This adds Path-based constructors to CopyStep, which allows using Path
objects at higher levels. A follow-up task could be to switch the
implementation of CopyStep to use Path objects throughout (and lower),
but that's not necessary to start migrating higher levels.

Test Plan: Added a basic test case, ran tests
Collapse the inheritance hierarchy of javac classes.

Summary:
Turns out that we didn't need this extra level of inheritance. This is step one
in an exceptionally cunning plan to make java compilation in buck less terrifying.

Test Plan:
buck test --all
Don't attempt to write to the distributed cache on an ABI cache hit.
Output traces to a buck-logs directory and save the last 25 of them by default.

Summary:
A lot of users complain about a problem,
but then run `buck clean` and the log is gone.
Let's use that disk space!

Test Plan: Unit tests, tested locally.
Use static imports for Assume.assumeTrue() throughout the codebase.

Test Plan: Sandcastle builds.
Make the PathRelativizer return Paths.

Summary: Continue the process of migrating from String to Path where possible.

Test Plan:
buck test --all
Add missing @Override annotation.

Test Plan: Sandcastle builds.
Stop expecting ".class" in primary-dex-classes.txt

Summary:
The maintenance of this file will be easier if it just contains internal
class names and let Buck add the ".class".
Enable minimizing the primary dex with DalvikAwareZipSplitter.