Added 'Performance Tuning Your Builds' article to documentation.

Summary: Document performance tuning

Test Plan: Ran soy locally.
Add TravisCI support.

Summary:
Add TravisCI support.

This makes it so test status shows up in the README.md and on pull requests.

We use TravisCI for xctool as well.
Specify --no-optimize to dx for APK debug builds.

Test Plan: Sandcastle builds.
In BuildRuleResolver, assert that a rule is added only once.

Summary: This seems to have uncovered a bug in AndroidBinaryRuleTest.

Test Plan: Sandcastle builds.
Integration test to verify all tests are run on the same thread under @RunWith.

Summary:
Updated `DelegateRunnerWithTimeout` so that it maintains the default behavior of
JUnit where all tests are run on the same thread. We observed some test cases in
the wild that relied on this behavior. Specifically, Robolectric tests rely on this
due to a check in `org.robolectric.shadows.ShadowLooper`.

Test Plan:
Add a test to the `RunWithDefaultTimeoutIntegrationTest` test case to exercise the fix.
Made `executor` an instance rather than a `DelegateRunnerWithTimeout` field and verified
that `RunWithDefaultTimeoutIntegrationTest#testAllTestsForRunWithAreRunOnTheSameThread()`
failed.
When running javac, print out the number of errors and warnings.

Summary:
When trying to fix a java_library with a lot of errors, it is helpful
to see the error count as you go along so you can tell if you are making
progress or not.

Test Plan: Built a failing java_library and verify that the message appears.
Add getFileSize() and writeLinesToPath() to ProjectFilesystem.

Test Plan: Sandcastle builds.
Fix a cache corruption bug caused by including a rule's output on its classpath.

Summary:
Apparently, a `java_library` was including its output JAR on the classpath when
building itself. This means that removing `srcs` from a `java_library` and then rebuilding
the rule would still succeed if the output JAR was still around from the previous build.
This would explain some rebuild issues that we have received anecdotal reports of,
but have not been able to reproduce.

This diff solves the bug by fixing `DefaultJavaLibraryRule.getDeclaredClasspathEntries()`
so that its return value matches that which is required by its Javadoc:

```
/**
 * @return The set of entries to pass to {@code javac}'s {@code -classpath} flag in order to
 *     compile the {@code srcs} associated with this rule.  This set only contains the classpath
 *     entries for those rules that are declared as direct dependencies of this rule.
 */
public ImmutableSetMultimap<JavaLibraryRule, String> getDeclaredClasspathEntries();
```

Test Plan:
Added an integration test to make sure changing the set of files in a java_library's srcs
causes a rebuild.
Added a unit test to make sure the `-classpath` argument passed to `javac` does not include
the output JAR of the `java_library` rule being built.
Add support for --force-jumbo in DxStep.

Summary: We need this for the upcoming predex diff.

Test Plan: Comprehensive unit test for DxStep: DxStepTest.