Use watchman to watch the file system.

Summary:
When running as a daemon, use watchman to track file system
changes rather than the Java 7 WatchService to reduce latency.

Test Plan:
0) buck test --all
1) install watchman (https://github.com/facebook/watchman)
2) buckd
3) buck build buck
4) touch a source file
5) buckd build -v 8 buck 2>&1 | head
6) Check that "Parser watched event ENTRY_MODIFY" event is printed in 5)
Automatically snake case field names from Description constructor arguments.

Summary:
Using @Hint all the time is a P_I_T_A. It should be possible to avoid many
of the common cases where it's needed by automatically converting camel
case to snake case.

Test Plan: buck test --all
Fix WatchmanWatcher tests.

Test Plan: ant clean && ant && ant test
Add a unit test for my recent fixes to SmartDexingStep.

Test Plan: Sandcastle builds.
Change Parser to take paths instead of strings.

Summary: Working on parallel parsing of build files.

Test Plan: unit tests
Isolating genrules in a temp directory.

Summary:
We still pass a lot of absolute filepaths around when we invoke genrules and
sh_binaries, but this is a step towards forcing those rules to specify their
inputs.

I expect this diff still fails several tests, and I'm putting it up mainly to
get a look at those failures.

Test Plan: buildbot
Use a clean dir for the AbstractGenruleStep step in AndroidBinaryRule.

Summary:
Previously this had been running at the root of the repo, like
Genrule. This diff cleans up AndroidBinaryRule, and deletes the
no-working-dir constructor that it had been using. Environment
variables now need to be provided as absolute paths, since
we're not in the root of the repo anymore.
Fold AccumulateClassNames into JavaLibraryRule.

Summary:
In practice, `AccumulateClassNamesStep` is very fast, so having a
separate `Buildable` for `AccumulateClassNames` creates unnecessary overhead
because it results in more Cassandra lookups.

It was also causing unnecessary rebuilds. For example, a `JavaLibraryRule` might
avoid rebuilding itself due to `MATCHING_DEPS_ABI_AND_RULE_KEY_NO_DEPS`.
However, the `AccumulateClassNames` that depends on it would still be rebuilt
locally because its `RuleKey` had changed (most likely due to some ancestor
`JavaLibraryRule` that had to be recompiled).

Normally, we would avoid this sort of rebuild by making `AccumulateClassNames` an
`AbiRule`; however, its dep (the `JavaLibraryRule`) already has an ABI key, which
is not the same key that `AccumulateClassNames` would need to determine whether it
needed to build itself. Morever, the ABI key that it would need from the
`JavaLibraryRule` would be the one it was designed to compute!

Overall, the simplest solution was to accumulate the `.class` file names and hashes
as part of `JavaLibraryRule`. This should speed up builds by avoiding unnecessary
rebuilds.

A side-effect of this diff was consolidating some logic common to
`DefaultJavaLibraryRule` and `PrebuiltJarRule` in a new `JavaLibraryRules`
utility class.

Test Plan: Sandcastle builds.
Debug android_instrumentation_apk.

Summary:
Temporary workaround to fix `android_instrumentation_apk`. Apparently, we
were using the APK-under-test's pre-dexed files in the `classes.dex`
for the instrumentation APK, which is completely wrong.

This only became an issue recently as a result of
introducing support for dex-merging for multi-dex apps, which made
`apkUnderTest.getPreDexDeps()` non-empty, which caused `AndroidInstrumentationApk`
to take a different path through the `addDxAndApkBuilderSteps()` method in
its superclass.
Fix an Eclipse warning I introduced via a rebase.

Test Plan:
No more warnings on src/ folder in Eclipse.
There are still some on test/, but I'll address those
in a separate diff.
Fix a lint warning in the open source version of Buck.