Add missing {sp} and fix a typo.

Test Plan: http://localhost:9811/
Fixed RuleKey.java so that its hash depends on the deps of the build rule.

Test Plan:
Created RuleKey.java.
Verified that the test failed without the other changes in this diff.
documentation for `source` and `target` arguments

Summary:
This adds documentation for the `source` and
`target` arguments for `java_library`; the corresponding
feature was added in D775212.

Test Plan: `soyweb.sh`
Warn users if they try to build an underdepped rule.

Summary: Warn users if they are building an under depped rule, allow overriding to only build with declared dependencies.

Test Plan:
Unit Tests, Built Buck with WARN_ON_TRANSITIVE, verified errors were thrown.

Fixed BUCK errors, verified Buck could be built with FIRST_ORDER_ONLY
Running an sh_test() was throwing an exception if it had been built but not executed.

Summary:
Refactored some of the test rule code so that it must check whether its test
results have been cached when considering whether the test needs to be run.

Ideally, TestRule would be an abstract class rather than an interface so that
we could standardize some behavior across classes that implement TestRule.

Test Plan:
Ran the following:

  TESTS=`buck targets --type sh_test | xargs`
  buck clean
  buck build $TESTS
  buck test $TESTS

Previously, this failed in fbandroid because `buck test` would see that the rule
was cached, so it assumed that the test results file was also written.
This was an error that was fixed in java_test(), but not sh_test().
Remove unused Ansi parameter.

Test Plan: Sandcastle builds.
Rename the Command interface to Step

Summary: Command is a loaded term in buck, as it represents the top level command ("build", "test") and the individual steps wihtin a BuildRule. This change removes that overloading by renaming "Command" to "Step" for the latter case.

Test Plan: buck test --all
Javadoc fixes.

Summary:
It's sad that even after going through all the work to set up PMD,
there are still basic things that Eclipse finds that PMD does not.

Test Plan: Sandcastle builds.
Segment the rules and parser packages into logical sub-groupings and move the android rules out.

Summary:
This is one step in the road to breaking out each of the areas of the buck code base into logical packages rather than a couple of uber-packages.

This change breaks the "rules" package into logical pieces, but only moves the android rules out (as they're presumably leaf rules with no other dependencies). A second diff will follow breaking everything else out.

I expect there to be some mess as these changes land and we detangle accidental circular dependencies.

Test Plan: buck test --all
Forward --verbosity value from `buck project` to `buck build`.

Test Plan: Ran `buck project -v 2` in fbandroid and saw a lot of output.
'buck project' builds java modules that use annotation processing

Summary:
'buck project' should set up everything so that IntelliJ has what
it needs.  When modules generate source via annotation processing,
IntelliJ needs those generated sources.  So this needs to happen
in 'buck project'.

The task for this talks about adding logic to BUILD_DEFS to do this.
However, after working through options here, it seems better to put
the fix in buck so that humans do not need to edit things in two
places (start using annotation processor in BUCK, and add target to
the initial targets list).

This change implicitly adds any java libraries that use annotation
processing to the list of initial targets and builds them in the
same pass.

Test Plan:
- existing unit tests
- 'buck project' in fb4a, verify sources are generated
- time different combinations of builds
Only rebuild first order dependants

Summary: This diff saves ~55 seconds per incremental build

Test Plan: Incrementally built fb4a with -b FIRST_ORDER_ONLY, verified only changed rules, their direct dependants, and the android binary re-built
Stop ignoring directories named "gen/".

Summary:
Remove an old hack that we had for older versions of IntelliJ
that would create directories named "gen/" in the source tree.
These directories are now created under buck-out/android/
because of how `buck project` generates IntelliJ configs, so this
is no longer an issue.

Test Plan: Manually.
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)
Supply temporary directory to java_test()

Similar to genrule() give the test running JVM a temporary directory
below buck-out that is uniquely named for this test target. Send
the path in by both the TMP environment variable and java.io.tmpdir
system property.

Fixes https://github.com/facebook/buck/issues/13
Supply temporary directory to genrule() invoked java_binary()

JVMs on UNIX systems typically hardcode to use /tmp as the default
temporary area, unless system property java.io.tmpdir is set on
the command line. Pass the genrule's TMP location to the binary
as a system property so it can be used automatically.
genrule() should fail if any command fails

If a genrule is a complex sequence of shell commands the rule
should fail if any of the commands fails and its exit status was
not examined.

Fixes https://github.com/facebook/buck/issues/21