Fix `buck build --verbose 2` so it prints only commands again.

Test Plan: Ran `buck build fb4a` and saw only Bash commands.
Correct a javadoc link that does not need to be fully qualified. No logical changes

Summary: Belatedly responding to a review comment with a diff

Test Plan: Eyeballed the code
Modify ZipDirectoryWithMaxDeflateStep to not deflate certain types of files

Summary:
Use file extension to figure out if we should just store certain files.
Fix a grammatical error in an error message.

Test Plan: Sandcastle builds
Implement build artifact caching.

Summary:
Implement two alternative mechanisms for build artifact caching.  The
simpler of the two stores build artifacts as files in a directory; the
other stores build artifacts in a Cassandra cluster.

Fix Genrule's getInputsToCompareToOutput() to sort its output.

Test Plan:
Verify that both directory- and Cassandra-based caching positively
impact clean build times when building with a populated cache, e.g.

  time buck build fb4a
  buck clean
  time buck build fb4a
Incorporate buck version UID into RuleKeys.

Summary:
Compute a buck version unique identifier (UID) based on the git revision
and any relevant local changes.  Incorporate the UID into RuleKeys so
that there is no danger of reusing cached artifacts that are generated
via a command sequence that differs depending on buck version.

Test Plan:
Verify via log inspection that the UID is incorporated into RuleKeys,
and that the UID varies as local file changes are made.
Ignore the .idea/ant.xml file

Summary: IntelliJ keeps changing this file, we don't use ant from IJ and git loves to try and add this to random diffs. Adding to the .gitignore.

Test Plan: Code review.
Break out rules into their logical packages.

Summary:
A joyous excursion into packaging and futzing with build targets. We now have a codebase more or less broken up into logical packages. Things to note:

* New groupings of functionality should declare their Steps in a ":steps" target.
* BuildRules should be declared in a ":rules" target that should depend on ":steps"

Test Plan:
buck test --all
Manually inspect out to ensure that all packages are run
Improve regex matching for WARN_ON_TRANSITIVE

Test Plan: Unit tests, build fb4a
Fixed problems with incremental builds

Test Plan:
Built fb4a, added a runtimeException to NearbyPlacesUriIntentBuilder, verified fb4a failed to start.
Removed it, verified it started again.

Unit tests.
Fix 'buck project' for annotation processing

Summary:
D766822 includes an AndroidLibraryRule.Builder that has its own
AnnotationProcessingParams.Builder rather than using the inherited one
from JavaLibraryRule.Builder.  This breaks 'buck project's ability to
generate IntelliJ files that work with annotation processing.

This change fixes that and adds a unit test to verify that this does
not break in the future.

Test Plan:
- unit tests
- 'buck project' in fb4a and verify module_...iml references annotation
  sources.
Fix buck with adt 22

Test Plan: unit tests, built fb4a after upgrading
Improve error messages on step failure.

Summary: A number of people have complained the error messages are too verbose.

Test Plan: Built fb4a with an error, verified the message was sane.
Update .classpath.

Summary: Buck showed up with errors in Eclipse. Hopefully this fixes the problem.

Test Plan:
* Look at the Buck project in Eclipse, no more red.
* ##$ buck test --all## still pass
Make project_config() rules buildable.

Summary:
This is so it is possible to run something like:

  buck targets | grep '//javatests/' | xargs buck build

Previously, this would fail if BUCK files under javatests/
contained project_config() rules. Ultimately, it should be
possible to express the above via:

  buck build //javatests/...

Test Plan:
Unit test.
Ran the following in fbandroid:

  buck targets | grep '//javatests/' | xargs buck build
Generate IntelliJ project files that only pull in declared deps.

Test Plan: Unit tests, ran 'buck project'
Fix Eclipse warnings: missing @Override and unused code.

Test Plan: Sandcastle builds.
Add an FAQ to explain why it is called Buck.

Summary:
Simon said that he gets asked this a lot,
so it seems convenient to be able to point people to an answer.

Test Plan: http://localhost:9811/concept/faq.html
Move all the android code into the android package. This means moving the UberRDotJavaUtil and associated steps out of java.

Summary: The diff to move everything into logical packages left some android classes in the java package because they were referenced in both places. Separate them out and break circular dependencies using build file magic.

Test Plan: buck test --all
Hide Java stack traces from python errors

Summary: Use TerseRuntimeExceptions to exclude Java stacks from python errors.

Test Plan: 1) https://github.com/facebook/buck/issues/17 2) See only python stack trace and error.