Add support for directories to FakeProjectFilesystem.

Test Plan: Unit tests included.
Ensure explicitly passed-in project targets work even when default_exclude_paths is set.

Summary:
I broke this in D1450250. This ensures targets explicitly
passed to 'buck project' are included in the partial graph, even
if they're otherwise excluded via default_exclude_paths.

Test Plan:
Unit tests included. Note that I found we had about 4
FakeProjectFilesystem objects created in every test, so I unified
them as best as I could for the test.

Ran `buck project //path/to/excluded:project` in a repo with
default_exclude_paths set to exclude 'path'. Before, it failed.
Now, it works.
Include BUCK files when doing buck targets --referenced_files.

Test Plan:
Unit tests.
buck targets --reference_files <a buck file>, verify it's included.
Spell "environment" correctly.

Summary: The reaminder of tihs messgae is spellt korrectly.

Test Plan:
* Get someone to spell "environment" as part of a spelling bee.
* Assume their answer is correct.
* Modify the spelling of JavacOptions.Builder.setJavaCompilerEnvironment
  to reflect the spelling given to us.
Fix bug in IncrementingFakeClock.

Summary:
Fakes are fun!

This one had a bug: `IncrementingFakeClock.nanoTime()` would always
increment the fake clock by 'increment' each time it was called, but
`IncrementingFakeClock.currentTimeMillis()` only incremented the fake
clock by 1 ns each time it was called.

Test Plan: Unit test included.
Add missing `@Override` annotation.

Test Plan: Eclipse warning goes away.
Pull variables from Java properties instead of environment variables.

Test Plan: Buck build buck, verify git_dirty is properly specified
Remove unneeded containsKey().

Test Plan: Unit tests.
Ignore another integration testdata directory.

Test Plan:
buck test --all no longer fails against the diff which re-introduces buck
package boundary crossing invariant.
Use system property to get the path to asm jar.

Summary: Follow up on the last diff that fixed code coverage step for buck.

Test Plan: buck test --all --code-coverage --code-coverage-format xml --no-results-cache
Revert "Fix bug in IncrementingFakeClock".

Summary:
This reverts commit 8c0f1c0a6e690f8b9e345d44639b5e8db0f97d29.
It breaks times reported on the superconsole on Linux.
Use "cxx" abbreviation instead of "cpp" for C/C++ support.

Test Plan: buck test --all
greedy audit owner

Summary:
Find targets bottom up when running `buck audit owner`
instead of building the full action graph.

Test Plan: `buck test --all`
Genrule: add a `getOutputName` method.

Summary: Returns the name of the output file (e.g. as specified in BUCK files).

Test Plan: included test
Pass the --porcelain flag to git status.

Summary: The diff that added this to `bin/buck_common` did not update python scripts.

Test Plan:
Rebase on top of this and run buck commands with/without changes
and verify the is_dirty sys property is correctly getting set.
Verify against INSTRUCTION coverage. Now assert_code_coverage.py shows all metrics.

Summary:
This updates assert_code_coverage.py so that all types of
coverage measured by Jacoco (INSTRUCTION, LINE, BRANCH,
METHOD, CLASS, COMPLEXITY) are printed to the console.

Insofar as this script functions as a test, it now verifies
INSTRUCTION coverage against the target percentage rather
than LINE coverage. The current INSTRUCTION coverage for Buck
is 78.76% whereas the LINE coverage is at 81.52%.

Test Plan:
Ran `python scripts/assert_code_coverage.py` and observed
that the expected values were printed to the console.

Also tested with `CODE_COVERAGE_GOAL` set to 80 and verified
that the expected failure message was printed.
Move getBuildFile() to Repository.

Summary:
It's not possible to get the build file for a target unless you have the
repository that that target belongs to. The `getBuildFile()` method on
`BuildTarget` is doing the wrong thing, and all of its callers are broken in
multi-repo situations. Move that method onto `Repository` and update its
callers.

When I'm honest with myself, I think this method should really live on
`RepositoryFactory` (which maybe should be renamed to "something something
Universe"), because only that class has access to the set of *all* repositories
that a target might conceivable come from. However, that does have an icky,
too-much-responsibility feel to it, and right now all the callers have access
to a `Repository`, so this is easier.

Test Plan: buck test --all
Add more logging to ProjectBuildFileParser.

Summary:
We currently have a big gap in the logs when we prepare
and run buck.py. This adds logging around it.

Test Plan: 'buck project', confirmed new logs showed up
Add timeout to WatchmanWatcher and bump up default overflow threshold.

Summary:
WatchmanWatcher currently exits if it detects 200 changes.
The intention was to ensure reading its output doesn't take longer
than a full reparse would take.

I was running into this limit quite a lot in project generation into a
non-buck-out directory. This diff bumps the Watchman event limit from
200 to 10000 and adds a timeout of 10 seconds after which we give up
on Watchman, just in case we get that many events.

With this diff, 'buck project' runs go from 30 seconds to 10 seconds
on my box.

Test Plan:
Unit tests included. Tested 'time buck project' twice
to confirm it no longer jettisoned the cache every time in my
repo and that runtime went from 30 seconds to 10 seconds.
Add `BuildRuleResolver.addAllToIndex` to add an iterable of build rules.

Summary:
This diff adds a helper method to support adding an iterable of
BuildRules.

Test Plan: included test