Reuse the ExecutorService in DelegateRunnerWithTimeout so all tests are run on the same thread.

Summary:
It appears that all tests that use `ShadowLooper` in Robolectric need to be started from
the same thread so that its `resetThreadLoopers()` method works as expected.

Test Plan:
Sandcastle builds.
I promise to write an integration test in a follow-up diff.
diff --git a/src/com/facebook/buck/junit/DelegateRunnerWithTimeout.java b/src/com/facebook/buck/junit/DelegateRunnerWithTimeout.java
index 07c2ec3..7cbacb2 100644
--- a/src/com/facebook/buck/junit/DelegateRunnerWithTimeout.java
+++ b/src/com/facebook/buck/junit/DelegateRunnerWithTimeout.java
@@ -31,6 +31,16 @@
  */
 class DelegateRunnerWithTimeout extends Runner {
 
+  /**
+   * Shared {@link ExecutorService} on which all tests run by this {@link Runner} are executed.
+   * <p>
+   * In Robolectric, the {@code ShadowLooper.resetThreadLoopers()} asserts that the current thread
+   * is the same as the thread on which the {@code ShadowLooper} class was loaded. Therefore, to
+   * preserve the behavior of the {@code org.robolectric.RobolectricTestRunner}, we use an
+   * {@link ExecutorService} with a single thread to run all of the tests.
+   */
+  private static final ExecutorService executor = MoreExecutors.newSingleThreadExecutor();
+
   private final Runner delegate;
   private final long defaultTestTimeoutMillis;
 
@@ -63,7 +73,6 @@
         delegate, notifier, defaultTestTimeoutMillis);
 
     // We run the Runner in an Executor so that we can tear it down if we need to.
-    ExecutorService executor = MoreExecutors.newSingleThreadExecutor();
     Future<?> future = executor.submit(new Runnable() {
       @Override
       public void run() {