Use try-with-resources to ensure resources get closed.

Test Plan: Eliminates Eclipse warnings.
Add in jar blacklist to prevent including files in jar files

Summary: When building a java_binary, all files in dependent jars are
merged into the output jar. This includes everything in the META-INF
directory. When things like cryptographic jar signatures are included
from dependencies like org.bouncycastle, the resultant jar will fail to
load.  Add a blacklist option to java_binary so that one can not include
META-INF/ and other files in the build.

Test Plan: Test runs
Make test coverage report with JaCoCo work in the wild

Summary:
EMMA coverage report invocation is working, but it is somehow flaky.
Test coverage report with JaCoCo is looking very promising but it
seems to only work for Buck project itself because some paths are
hard coded and other paths are customizable but still not exposed
in buck_common script as it's the case with broken EMMA.

Make hard coded path customizable and expose the paths in buck_common
so that folks in the wild can use it.

Closes https://github.com/facebook/buck/pull/173

Test Plan:
Clone Gerrit Code Review project and issue this command:
buck test --all --code-coverage --code-coverage-format html --no-results-cache
Enjoy the report in buck-out/gen/jacoco/code-coverage/index.html
Make sure test runner exits, even if the test class threw an exception

Summary:
If a test class fails in a static initialiser then the test runner hangs.
Closes https://github.com/facebook/buck/pull/141

Test Plan: `buck test --all`
Enumize resource and id types in a R.txt entry.

Test Plan: buck test --all
Delete bin/buck_common bash script.

Summary: RIP. Hopefully for good this time.

Test Plan: Dead code.
Ensure xcode_native dependencies are linked in to binary

Summary:
To refer to libraries built by existing Xcode projects, we
use the 'xcode_native' rule type. It correctly expresses the
dependencies, but binary and test rules which depended on xcode_native
rules were not actually linking the library into the final result,
which meant we had to hard-code linking them in via the BUCK file.

This fixes the bug and adds a test.

Test Plan: Added test. It failed. Applied fix, test no longer failed.
While checking if buckd is running, also check if the port is being listened on.

Summary:
This is obviously suboptimal, because just as some other process could claim
the same PID, another process could be listening on the exact same port.
But the chances of that happening are somewhat lesser.

Test Plan:
```
$ buckd
$ echo 11111 > .buckd/buckd.port
$ buck
// Notice no more "connection refused" error.
```
[iOS] Add optional parameters header_path_prefix and use_buck_header_maps

Summary:
The first parameter is meant to specify a custom prefix for subsequent
library-style imports `#import <PREFIX/foo.h>`.  The default value is
the name of the BUCK target, but some projects use different targets to
generate "flavors" of a same library. The equivalent information is
currently in pieces of xcconfig embedded in BUCK files.

In a next diff I use this new field to set the Xcode build param
PUBLIC_HEADERS_FOLDER_PATH to ../Headers/PREFIX. Another diff will use
the second parameter to generate header maps with Buck.

Test Plan: buildbot
[iOS] Use the new field header_path_prefix to set PUBLIC_HEADERS_FOLDER_PATH

Test Plan: test included
Tweak test coverage report, include untested LOC per package

Summary: Add field to indicate how many untested LOC each package
contains. Remove COMPLEXITY coverage type from report to make space for
it.

Test Plan: Run tests and run the script, compare results to the previous
version
thrift_library outputs a jar

Test Plan: Unit test ThriftIntegrationTest checks for generated java
file and .jar
Easy: Add verbose logging to diagnose ProjectGenerator bugs

Summary:
Scott Wolchok reported a nasty bug in ProjectGenerator.
I added verbose logs to figure out what was going on.

Test Plan: ant
Fix flipped Boolean logic in SourceTreePath.equals()

Summary:
I got a report that ProjectGenerator was missing some files.
With the logging in D1495765, I noticed PBXFileReference objects
were being re-used for two SourceTreePaths.

I tracked this down to SourceTreePath.equals() having a flipped
Boolean operator. I wrote a test to confirm it was broken, and
fixing the operator fixed the test as well as the missing files
from ProjectGenerator.

Test Plan:
Unit test included. Ran 'buck project' to generate Xcode
project, confirmed missing files were generated.
Add the ability to configure libthrift for JavaThriftLibrary in .buckConfig

Summary: Generated java thrift files depend on libthrift (which also
depends on slf4j as an exported dep).  Add the ability to specify the
libthrift to be used for the java flavor of the thrift library so that
source can be compiled.

Test Plan: Test runs, use it to compile java thrift_libaries
Fix a linting error. No logical changes.

Summary: Nothing more and nothing less than fixing a lint error.

Test Plan: ant pre-checkin
Make the Unzip utility class use Paths.

Summary: We use Path to represent a path, not String.

Test Plan: buck test --all
WinCompat: Don't shell out for UnzipStep

Summary:
We have a perfectly serviceable utility class for this kind of thing. Use
that in preference of shelling out to actually unzip files.

Test Plan: buck test --all
Lower logging level for skipping files in JarDirectoryStep

Summary: JavaBinaryDescriptions explicitly use blacklist so we don't
need to print out the fact that we're skipping files each time.

Test Plan: Tests run
Add support to XcodeNative for custom target and buildable names

Summary:
Previously, XcodeNative assumed that the target name
was the same as the rule name, and the buildable name was always
"lib[rulename].a".

This isn't true for all native Xcode projects, so this diff
adds the ability to customize the target and buildable name.

Test Plan:
Unit test included for project generation.
Workspace generation unit tests pending #4783327; tested
by running 'buck project --workspace-and-projects //path/to/target:workspace'
for a workspace containing references to xcode_native targets
with custom library names.