Convert a RuntimeException to a CoerceException in the PathTypeCoercer

Summary: This should allow the AppleSourceTypeCoercer to work as expected.

Test Plan:
sandcastle
manual inspection of an extant config
Explicitly break on default for ExopackageInstaller to document expected behavior.

Test Plan: sandcastle
Migrate java_library and associated build types to be Buildable.

Summary:
That means moving:

* java_library
* java_test
* android_library
* robolectric_test

Test Plan:
buck test --all
sandcastle builds
Manually checking that prod apps and "buck project" continue to work
Bubble up CoerceFailedException message so that DaemonIntegrationTest passes.

Summary: Also, this is definitely a better error message to show to the user.

Test Plan: DaemonIntegrationTest passes.
Use ProjectFilesystem.getFilesUnderPath() instead of a directory traverser.

Summary: One usage at a time.

Test Plan: buck test --all
Fix accidental shadowing of a field

Test Plan: unit tests
Fix .src.zip files for external javac

Test Plan: Unit tests, buck build buck with javac set
Fix Rulekeys for AndroidBinary

Test Plan: sandcastle
Fix the build

Summary: sorrybus

Test Plan: arc lint
Fix build again

Summary: clowntown

Test Plan: Unit tests
[buck] macosx_framework rule

Summary: It's just like an ios_library except it generates a dylib inside of a .framework just by changing the NativeTarget setting.

Test Plan: Added a macosx_framework for Diamond's Renderer target. Successfully builds and links!
Support for disguised native executables in android_binary

Summary:
I want the exopackage install agent to contain a native executable.
This is a big pain because it has to be built for every architecture and
packaged into the apk, then we need code on the device to extract the
right one into world-readable storage.

The good news is that we already have support for most of this.
ndk_library can build executables if they are specified in Android.mk,
and the Android installer can automatically extract the right one.

The bad news is that this only works for files named "lib*.so".

The semi-hacky solution is to automatically rename any native library
output called "*-exe" to "lib*.so" to ensure that ApkBuilder will
package it and the installer will unpack it.  It is then up to the app
to know how to execute it.

Test Plan: Built and ran the (upcoming) native exopackage installer.
Only include java files in Javadoc

Summary: Is there any reason not to do this?

Test Plan: ant javadoc
Add native implementation of exopackage installer agent

Summary:
It turns out that running dalvikvm on the Android command line isn't as
reliable as I had hoped.  One one device, it got an NPE during VM init.
On one emulator, it printed a warning about text relocations that
confused our output parsing (since ADB does not separate stdout from
stderr.)

The solution is to just do a native implementation, using the
executable-in-apk trick introduced in the last diff.  This native agent
is mostly identical to the Java version, and we can still switch back
and forth.

I use the public-domain miniz library to extract JAR signatures.  I have
disabled compression and a few other features to make it as small as
possible.

Test Plan: Installed exopackages on a few devices.
ThrowableLogEvent now logs throwable's message too.

Test Plan:
buck test --all
add an exception in RecordFileSha1Step, buck build instagram and verify
exception message shows up.
Fix problems with the @Immutable annotation

Summary: Fixed classes that were marked as @Immutable but clearly weren't

Test Plan: unit tests, re-run findbugs
Fix findbugs perf issues

Summary: perf issues flagged by findbugs

Test Plan: Unit Tests
Fix up ProjectGenerator to be more compliant to Buck's style

Summary: Moar FindBugs stuff

Test Plan: Unit tests
Enhanced deps live on Buildables, not the BuildRule, when calculating rule keys

Summary:
Fixes an issue where we are incorrectly calculating the RuleKey of a BuildRule that
exports its deps.

Test Plan: buck test --all
Kill DoNotUseAbstractCachingBuildRule with fire!!!!!

Summary:
This also makes findbugs happy

killitwithfire2
killitwithfirebear
killthemwithlasers
killeditgilbert

Test Plan: Unit tests