Ignore certain input files while computing android_resource's rule key.

Summary: Use the same pattern as `aapt` to ignore files.

Test Plan:
buck test --all
Added a unit test.
Pass client environment to DefaultExecutionEnvironment.

Summary:
Previously DefaultExecutionEnvironment would always use the process
environment whether or not buckd was used. This change ensures that
DefaultExecutionEnvironment always uses the client environment.

Test Plan: buck test --all
Delete watchman watch entry when killing buckd

Test Plan:
buckd
watchman watch-list
buckd --kill
verify watchman watch-list returns empty list.
Disable one of the `ExternalJavacIntegrationTest` test cases.

Summary:
Because we need green builds.
I will make sure to turn this one and DaemonIntegrationTest back on once we
resolve the inotify watches limit on buildbot.

Test Plan: sandcastle
Make Android agent run on latest AOSP

Summary: Compile agent as a PIE executable so that it runs on latest AOSP, which insists that all executables are PIE

Test Plan: buck install fb4a
Extract all graph enhancement into a single interface.

Summary:
Prior to this diff, there were three ways that dependencies could be altered:

1) Return "null" from "getEnhancedDeps()", which was effectively a no-op
2) Return non-null from "getEhancedDeps()", which added those deps to the inferred deps.
3) Implement HasDepsOverride and go nuts.

Hilariously, it was possible to combine 2 and 3, though nothing did. Rather than do this
nastiness, we now delegate all graph enhancement to the Buildable. The reason for doing
this here rather than at the Description level is that each Flavor could ultimatley
generate its own Buildable, and each of those might want to mutate the graph in different
ways.

Test Plan:
buck test --all
Build the prod apps repeatedly and run every automated test we have on them.
Simplify logic in BuildRuleFactoryParams to resolve a path.

Summary:
Currently, no one uses this method other than tests.

My diff which introduces the target graph collects all paths referenced by a
target, using `resolveFilePathRelativeToBuildFileDirectory()`. A lot of time
was spent checking if the file exists or not, which is anyway later than by
`PathTypeCoercer`. This diff minimizes the logic in that method to simply return
a path without doing any checks.

Remove test cases for deleted code.

Test Plan: sandcastle.