Code cleanup.

Summary:
Removed unused code/imports and a missing generic.
Fixed a unit test. Unit test methods should never have return statements.

Test Plan: Eliminated all warnings in Eclipse.
Introduce PMD 5.0.3 to catch source code violations in Buck's source code.

Summary: This was motivated by javac's inability to warn for unused imports.

Test Plan: Sandcastle builds
buck test: Warn when no tests ran

Summary: Warn users if they didn't actually run any tests

Test Plan: that'd be nice
Remove a use of Hungarian notation.

Summary: See http://facebook.github.io/buck/contributing/codestyle.html

Test Plan: Sandcastle builds.
Fix some bugs in RuleKey calculation in android_resource() and java_binary().

Test Plan: sandcastle builds
Try to make it easier to determine the license for Buck (Apache 2.0).

Summary:
Add a LICENSE file downloaded from http://www.apache.org/licenses/LICENSE-2.0.txt
Updated README.md to state the license information explicitly.

Test Plan: Previewed README.md locally using a Markdown Chrome extension.
Clean up some error messages thrown when writing bad BUCK files.

Test Plan:
Unit tests,
Tried repro stesps in https://github.com/facebook/buck/issues/6

Fix lint

Test Plan: ant lint
Add XML output for code coverage.

Summary:
Emma can generate any combination of html, xml,
and text output.

If we want to parse coverage data at some point, it
might be useful to include the xml output.

Test Plan:
Updated the existing unit test; ran manually and
verified that the xml file was created and contained
sane data.
bin/buck should only invoke `git` if a `.git` directory is present.

Test Plan: Manual testing.
Added 'annotation_process_only" option

Summary:
Task #2348896 requires separating the annotation processing
step from the rest of the build.  This adds that capability
to buck.

The javac compiler supports a '-proc:only' option that will
process annotations without generating .class files.  Using
'annotation_process_only=True' in BUCK adds that option.

Test Plan: - unit test modified to try it
Create an FAQ for Buck.

Summary:
Initial questions for the FAQ:

  Why doesn't Buck support Windows?
  Why is Buck built with Ant instead of Buck?

I thought we should openly address some of the "Cons" listed on:
https://gerrit.googlesource.com/gerrit/+/57a4d597cd1111ebabf9bbf495ecd45324e7acdd
Remove EchoCommand from JavaBinaryRule.

Summary: I don't think we should announce that a JAR was built by default.

Test Plan: Sandcastle builds.
Add links to "Discussion Group" and "Report a Bug".

Test Plan: http://localhost:9811/
Documented shorthands for build targets from the command-line.

Test Plan: http://localhost:9811/concept/build_target.html
Document how to tell Buck where the Android SDK/NDK are.

Test Plan: http://localhost:9811/setup/install.html
The Android SDK should not be required when building a pure Java project.

Summary:
Instead of throwing `NoAndroidSdkException` as part of the
buildup to create an `ExecutionContext`, only throw
`NoAndroidSdkException` when `ExecutionContext.getAndroidPlatformTarget()` is
invoked and the Android SDK has not been specified by the user.
This way, a `Build` can create an `ExecutionContext` and run its course
without the creation of an `AndroidPlatformTarget` as a requirement.
This will make it easier to use Buck for a non-Android Java project.

Also changed `NoAndroidSdkException` to be an unchecked exception,
as it is not recoverable. This helps eliminate a number of catch blocks
in the code.

See https://github.com/facebook/buck/issues/7.

Test Plan:
As follows:
    unset ANDROID_HOME
    unset ANDROID_SDK
    rm -rf local.properties
    buck build buck
Reset compressed size when combining JAR/ZIP archives

zlib does not always deflate a resource to the same compressed size as
the original input.  The input resource may have been compressed using
a different version of libz, or different compression settings.

Before adding each entry to the ZIP, clone the entry and reinitialize
the compressed field to -1 as is done by the more commonly used
ZipEntry(String) constructor.

This fixes a rare case where including a JAR in a java_binary() may
throw an error such as:

  invalid entry compressed size (expected 4271 but got 4275 bytes)