Don't share java.io.tmpdir

Summary:
Another diff to support the TestPilot pattern where:
* TestPilot runs a single `buck test --dry-run ...` to get a list of tests; then
* TestPilot launches multiple concurrent `buck test --one-time-output --filter <test>` processes.

{D1371090} used the `--one-time-output` option to have unique subdirs of `buck-out` for each individual `buck test` process.  This diff gives each `buck test` process its own `java.io.tmpdir` as well.

I'm pretty sure this is what's causing errors like the one shown in P13017522.

Test Plan:
Nothing automated :(

I tested this by inspecting the output of `getPathToTmpDirectory` with the debugger, with and without the `--one-time-output` option.

Also [[https://our.intern.facebook.com/intern/testinfra/testrun/15095243 | this test run]] shows the fix is eliminating my APK jarsign woe.  The `SHjsign` and `SHadb` errors went from 14-per-run to 0-per run, as summarized in this extremely obscure paste: P13017798.
Remove dead code.

Test Plan: buck test --all
Remove unnecessary addCoreDataModelBuildPhase call.

Summary:
This call doesn't do anything as there's another call right
before it in generateBinaryTarget.

Test Plan: buck test --all, Tools/buck/buck-project.py
Introduce new verbose log level

Summary:
Previously, the logging facade from Airlift exposed four log
levels: error, warning, info, and debug.

I'd like to match fbandroid and fbobjc by adding a "more verbose than
debug" level, conveniently called "verbose". By default, this will not
be written anywhere, but engineers working on their own systems can
enable verbose logging for their areas in .buckconfig.local.properties.

Test Plan:
Changed a log message to verbose, confirmed it wasn't logged
until I enabled FINER level logs.
Easy: Change RuleKey logging to verbose level

Summary:
Our logs are filled with tons of ultra-verbose RuleKey
debug statements, even for rules we don't execute.

This changes RuleKey's logs to verbose level so we'll only see
them if we explicitly enable them.

Depends On D1425020

Test Plan:
buck build buck. Before, it spewed RuleKey logs to
buck-out/log/buck-*.log. Now, it doesn't.
Introduce UnzipStep.

Summary: This is needed for upcoming work with .aar files.

Test Plan: Created UnzipStepTest.
Amend AndroidPackageableCollector.addResourceDirectory() to take a Supplier for the package.

Summary:
This is needed for upcoming work with .aar files.

Specifically, at the point when `AndroidPackageable#addToCollector()` is invoked,
the `rDotJavaPackage` for an `.aar` is not yet known because it must be unzipped
and have its `AndroidManifest.xml` parsed to figure it out. All of this will be
done before the `UberRDotJava` rule is built, so it should be fine, in practice.

Test Plan: Sandcastle builds.
Make BuckEventBus stop throwing exceptions on close().

Summary:
Sometimes (these days, usually when autodeps triggers), BuckEventBus shutdown
will time out. Previously we threw a ShutdownException in this case, but that
was causing legitimate build errors to get suppressed. Instead of throwing,
print a warning and carry on.

Test Plan: Confirm that timed-out failed builds still return non-zero.
Introduce TouchStep.

Summary:
A step that runs `touch <filename>` from the shell.

This is needed for upcoming work with .aar files.

Test Plan: TouchStepTest.
Ensure all log messages not filtered by top-level .level property are written to disk

Summary:
I noticed this when I was working on D1425063.

If an engineer wants to get verbose logs on disk, they currently need
to change both the ".level" property which controls which log messages
are dropped at the root level, as well as the
"java.util.logging.FileHandler.level" property.

With this diff, the FileHandler now logs anything not otherwise filtered
by the top-level ".level" property, so you only to to change ".level"
to get more verbose logs written to disk.

Test Plan:
Edited config/logging.properties, set .level=FINER.
Ran 'buck build buck'. Confirmed verbose logs were written to disk.
Reverted change, ran 'buck build buck', confirmed verbose logs were
not written to disk.
Super easy: Rotate up to 5 Buck debug logs

Summary:
Currently, we only keep one log in buck-out/log/buck-*.log.

This was accidental; I had this in D1405028 at one point and then
accidentally deleted it. This simply restores the setting.

Test Plan: Started buck twice, got two logs.
Serialize contacts information into buck events

Summary: TestPilot looks at Buck's events for all information about a test, so we should serialize a test rule's contacts information into its result events.

Test Plan: `com.facebook.buck.event.EventSerializationTest`
Easy: Disable java.util.logging console handler by default

Summary:
We need java.util.logging to play well with SuperConsole.
Right now, SuperConsole has no idea when our ConsoleHandler writes
to stderr.

I plan to fix this properly, but for now, let's just disable console
logging by default. (Developers can still enable it if they want.)

Test Plan: buck build buck, confirmed no console logging
Subscribe to BuckEventBus and publish to java.util.logging

Summary:
In D1421787, I attempted to publish java.util.logging
messages to BuckEventBus as LogEvents to play nicely with
SuperConsole. After talking with @dreiss, I realized this was
backwards for two reasons:

1) We don't want developer-focused messages appearing on end-user
consoles by default.

2) BuckEventBus is a terrible system to rely on for debug logging
(it's asynchronous and serial, plus it gets clogged up if any handler
takes a long time).

This diff flips D1421787 and D1421821 on their heads by introducing a
new class, LoggingBuildListener, which listens to BuckEventBus and
publishes events to java.util.logging.

Note that I'm a bit of a Guava EventBus n00b, so I couldn't figure
out how to listen for all events plus specialize for some others
without a bunch of 'instanceof' checks. So let me know if
this is goofy.

Test Plan: buck build buck, confirmed debug messages in logs.
Make `TestRule.runTests` return a ImmutableList

Summary:
This resolves some lint warnings issues where we may return
an ##ImmutableList## from implementations.

Test Plan: buck test --all
Fix DefaultAndroidManifestReader.

Summary:
* Make sure that the Reader used to create a DefaultAndroidManifestReader gets closed.
* Ensure that the path passed to a DefaultAndroidManifestReader is resolved by a ProjectFilesystem.

Test Plan: Sandcastle builds.
Easy: Add logging to Main.java

Summary:
Does what it says on the tin. We're starting to get iOS
engineers with multi-minute 'buck project' times, and I'm planning
on adding enough logging so we know what the heck is going on.

Test Plan: buck build buck, saw new log messages in buck-out/log
Bump up the client disconnect timeout for buckd.

Test Plan: buck test --all
Super easy: Remove unused class com.facebook.buck.debug.DebugLog

Summary:
This class is unused. We have real logging now, so we don't
need this class any more.

Test Plan: ant test
Update soy contributing docs with logging info

Summary:
Now that we have full-fledged logging, this updates the
soy contributing docs with info on how to use it.

I also updated the stylesheet to fix a few issues:

1) Tables were unstyled.

2) We forced a horizontal scrollbar on <pre> sections even when it
wasn't needed.

Screenshot: https://www.facebook.com/pxlcld/lp7K

Test Plan:
./docs/soyweb-local.sh
Opened http://localhost:9811/contributing/logging.html in browser.