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.