Update DefaultJavaLibraryRule so it stores its ABI key when it is built.

Summary:
The main changes in this diff are to `DefaultJavaLibraryRule` and `AbstractCachingBuildRule`.
It adds a utility method to `MoreFutures` and introduces `AbstractExecutionStep` as a
convenience for constructing anonymous `Step` classes.
The bulk of the diff is updates to the existing unit tests,
as well as the introduction of an integration test, `DefaultJavaLibraryRuleIntegrationTest`.

Test Plan: Sandcastle builds.