Fix overwriting xcconfigs for different configurations.

Test Plan: Unit test, test with projects where it caused issues.
Remove some dead code and simplify BuildRuleFactoryParams.

Test Plan: buck test --all
Use the StubJar class to generate ABI jars for java_library and its ilk.

Summary:
The original way of constructing an ABI for a jar was by compiling it with a custom
annotation processor which sucked out the signature. Rather than adding an annotation
processor, we now have the `StubJar` class, which can generate a stable jar
representing the same thing.

This makes minimal changes to the tests for the existing ABI infrastructure, but a follow
up diff will delete that tree and rename this one.

Test Plan: buck test --all
Remove the original AbiWriter code.

Summary: Just deleting the unusued files and tests.

Test Plan: buck test --all
Move the abi2 package to abi one.

Summary:
Since the old one was deleted. This also updates the build.xml file and run time
configs.

Test Plan: buck test --all
BuildInfoRecorder enforces that the paths being cached are not absolute.

Test Plan: Added a unit test.
Pass BuckEventBus to TargetGraph constructor instead of getActionGraph()

Summary:
I want to use `BuckEventBus` in the memoized `Supplier` in
`TargetGraph`, but that object is currently only passed to
`getActionGraph()`.

This moves the `BuckEventBus` out of `getActionGraph()` and into the
constructor of `TargetGraph` so the next diff can use it in the
`Supplier` instead of in `getActionGraph()`.

Test Plan: ant java-test -Dtest.class=ParserTest
Make TargetGraph only emit events the first time it creates the action graph

Summary:
A user reported their build logs were getting enormous
when running `buck project`.

I took a look and found they were filled with `ActionGraphEvent`
begin/end events containing the names of every target passed to
`TargetGraph.getActionGraph()`.

Since D1637354, this method is memoized, so the events aren't
measuring anything useful. In this change, I made it so we
only emit the event once (when we first build the action graph).

I confirmed with @natthu that including the names of the targets in
the event aren't very useful, so I removed them.

Test Plan:
`ant java-test -Dtest.class=SuperConsoleEventBusListenerTest`
Also ran `buck project` in another repo which previously produced logs that
were many tens of megabytes in size; confirmed logs are an order of magnitude
smaller now.
Delete unused plist code.

Summary: This code is not used anywhere.

Test Plan: CI
Delete xcconfig code.

Summary: We no longer have a use for xcconfig support. This removes the xcconfig parser, xcconfig support in apple_library, and in project generation.

Test Plan: CI
Remove unused methods.

Summary: Remove some unused methods in the Apple build rules.

Test Plan: CI
Change BuildConfig.EXOPACKAGE_FLAGS to a bitmask.

Test Plan: buck test --all
Rename NDK library DEP_*FLAGS to BUCK_DEP_*FLAGS

Summary:
This diff suffixes the makefile variables we add-in to Android.mk
files to it obvious they don't come from the NDK.

Test Plan: ran fixed test
Create a top level io package

Summary:
This involves moving the ProjectFilesystem and required support classes
from c.f.b.util to c.f.b.io. A later diff will clean up other IO related
classes, but this is already gargantuan enough.

No logical changes.

Test Plan: buck test --all
New utility class PathListing

Summary:
In D1679650, @coneko asked me to refactor all the existing
code that knows how to list, sort, and filter files.

This diff introduces a new class `PathListing` which knows how to:

1) List files in a directory
2) Sort them
3) Apply optional filters (size and/ot count)

The class can work in two modes, either including only files which
match the filters, or excluding files which match the filters.

I plan on replacing the logic from `ChromeTraceBuildListener`
and `TracesHelper` with this logic.

This class is in its own Buck rule to avoid dependency
messes.

Test Plan: Unit tests included.
Port ChromeTraceBuildListener to use PathListing

Summary:
This builds on D1681006 to port `ChromeTraceBuildListener`
to use the new class `PathListing`.

Depends On D1681006

Test Plan: ant java-test -Dtest.class=ChromeTraceBuildListenerTest
Add ProjectFilesystem.getSortedMatchingDirectoryContents()

Summary:
This is a testable wrapper for `PathListing.listMatchingPaths()`
and a complement to `ProjectFilesystem.getDirectoryContents()`.

I included a fake version in `FakeProjectFilesystem`.

I need to use it to keep the tests in `TracesHelperTest` working
(those tests depend on `FakeProjectFilesystem`).

Depends On D1681006

Test Plan: Unit tests included.
Port TracesHelper to use PathListing

Summary:
This builds on D1681006 to port `TracesHelper`
to use the new class `PathListing`.

Depends On D1681006

Test Plan:
`ant java-test -Dtest.class=TracesHandlerDelegateTest`
Opened http://localhost:8081/traces/ , confirmed I saw all
traces ordered newest to oldest.
Opened http://localhost:8081/trace/0f25554f-f408-4bb5-9ec1-a14d0fd51f3c ,
confirmed it opened trace viewer.
Clean up old buck-*.log files when they go over 25 MiB in size

Summary:
A user reported that their Buck log files were taking
up tons of disk space.

I fixed the core issue in D1679619, but this adds insurance
to make sure at startup that we clean up any old log files past
25 MiB worth of newer log files.

I didn't use the built-in java.util.logging support for log file size
limits, since that simply rotates log files after a single log file
gets to a particular size, which is not what we want.

Test Plan:
Unit test included. Ran `buck project` in directory with
lots of logs, confirmed old logs over 25 MiB were cleaned up and new
log continued to exist.
Easy: Rename ProjectGenerator.resolver -> ProjectGenerator.sourcePathResolver

Summary:
I'm going to save the `BuildRuleResolver` in `ProjectGenerator`
in a member variable so we can pass it to `NewNativeTargetProjectMutator`
for reuse.

In preparation for that, this renames `ProjectGenerator.resolver`
to `ProjectGenerator.sourcePathResolver`, since we'll have two "resolver"
member variables otherwise.

Test Plan: ant