Log watched events when Verbosity.ALL and fix isPathChangeEvent

Summary:
buckd seems to be getting far too many file watcher events on ubuntu.
This logging should help us find out what's going wrong.

Test Plan:
1) buckd
2) buck build buck --verbose 8 2>&1 | head
3) touch tmp (then wait a few seconds for the WatchService to notice, sigh)
4) buck build buck --verbose 8 2>&1 | head
5) check that the output from 4 includes logging about the change in 3
Fix grossness from existing unit test.

Summary:
Simon let me submit the original diff as-is because we needed to get a bug fix
in, but I made a mess of my unit test, so this cleans it up, as
promised.

Test Plan: Sandcastle builds.
Make ProjectFilesystem a required constructor param for BuckConfig.
Fix android_binary() so it uses resolve() instead of asReference() for the proguard config.

Summary:
This fixes a bug where when a BuildTargetSourcePath was passed as the `proguard_config`,
the build target was passed to `-include` instead of the path to the output file of
the build target.

Test Plan: Sandcastle builds.
If asSourcePath() returns a BuildTargetSourcePath, automatically add it to the deps.

Summary:
This will make it easier to use build targets in place of file paths in build files
because it will avoid the redundancy in explicitly adding the target to the deps.

Test Plan: Sandcastle builds.
Add [cache]cassandra_mode to control writes.

Summary:
Add [cache]cassandra_mode to control writes.  By default cassandra_mode
is readwrite, but it can be set to readonly.

Test Plan:
Set [cache]cassandra_mode=readonly, build fb4a, and verify that uncached
artifacts are only written to the client-side (dir) cache.
Suppress error messages on failures.

Test Plan: Built with an error, verified there was no spew.
Fix an NPE that could occur when a dep was loaded via the build cache.

Test Plan: This fixed an NPE that I was seeing.
Fix support for absolute paths in [cache]dir.

Summary:
Fix support for absolute paths in [cache]dir.  This was broken during
path relativization refactoring.

Test Plan:
Set [cache]dir=/tmp/buck-cache and verify that the cache ends up in /tmp
rather than in <project_root>/tmp/.
Allow an executable file to be counted as executable by a genrule.

Summary: It would be useful to be able to use the output of "export_file" in a genrule. This isn't possible normally, but for the case where the file being exported is executable, we should allow it.

Test Plan: buck test --all
Remove the legcay genrule variable expansions and update docs.

Summary:
The previous commit allowed the old style of command expansion (${//foo:bar}) to
continue to work. Remove this legacy support and improve the docs.

Test Plan:
buck test --all
Test the production apps.
[Buck] Update IntelliJ Project Files To Java 1.7

Summary:
What the title says. Java 1.7 is required but the
project files were still using 1.6 and this would
cause build failures in IntelliJ due to some new
annotations (if I recall it correctly).
Remove javacOptions.appendToRuleKey(builder) from JavaTestRule.

Summary:
JavaTestRule extends DefaultJavaLibraryRule, which already
incorporates javacOptions into the RuleKey in its
appendToRuleKey(RuleKey.Builder) method.

I also went ahead and made javacOptions private in
DefaultJavaLibraryRule, as it is responsible for compiling Java code,
so its subclasses should not need access to it.

Test Plan: Sandcastle builds.
Make FIRST_ORDER_ONLY builds output the correct javac commands when run with -v 2

Test Plan: Unit tests
Thread through a Clock, Thread Id Supplier, and an equals implementation that allows us to compare if two events are related to the same target

Summary: More refactoring.  We need this to better test logging and to start logging information about individual steps.

Test Plan: Unit tests