Pass through the location of dx to a genrule

Summary: We may want to surface more tools eventually.

Test Plan: buck test --all
Introduce BuildContext#logBuildInfo() and remove Logger from AbstractCachingBuildRule.

Test Plan: Sandcastle builds.
Include com.facebook.buck.step.fs in code coverage metrics.

Test Plan: Sandcastle builds.
Consolidate where buildRuleResult is set in AbstractCachingBuildRule.

Test Plan: AbstractCachingBuildRuleTest
Finish renaming CommandRunner to StepRunner

Summary: Clean up a few places in the code that still have the older name. No logical changes.

Test Plan: buck test --all
Exclude testdata from Javadoc and fix some malformed Javadoc tags.

Summary:
In general, this diff tries to tighten up our Javadoc generation:
* Modified build.xml to fail if there are any Javadoc errors.
  Unfortunately, I have never found a nice way to treat Javadoc
  warnings as errors:
  http://stackoverflow.com/questions/8392559/javadoc-treat-warnings-as-errors
* Modified our CI scripts to run `ant javadoc`.
* Fixed the URL to link to for JUnit javadoc.
* Moved ABI test data files into a testdata directory and introduced
  the use of TestDataHelper in AbiWriterTest.

Test Plan:
Ran `ant javadoc` and verified that `com.example` no longer shows up
in the package list, and that there are no Javadoc warnings or errors.
A Javadoc error will break the CI build, but a Javadoc warning will not.
Add @param Javadoc to silence an Eclipse warning.

Test Plan: "Unused param" warning in Eclipse goes away.
Add unit test for BuildContext#logBuildInfo().

Summary:
Ironically, with this diff, EMMA claims that our code coverage for
BuildContext.java by lines is "100% (70.9/71)", but our code coverage
by classes (which usually means internal or anonymous classes) is
only "80% (4/5)". I'm struggling to figure out where the untested
inner class is. According to EMMA, the only partially tested line is:

    Preconditions.checkState(!bootclasspathEntries.isEmpty(), <msg>)

presumably because whenever it is executed,
`!bootclasspathEntries.isEmpty()` is true. This happens to occur in
an anonymous `Supplier`.

Test Plan: Sandcastle builds.
Minor improvements to MoreFiles and added more test coverage.

Summary:
Test coverage for MoreFiles is now up to 87%.
(It looks like EMMA only gives partial credit for a try-with-resources
block if an IOException is never thrown.)

Test Plan: Sandcastle builds.