If the user-specified message to an assertion is non-null, still include the generated message.

Summary:
Previously, ProjectWorkspace.ProcessResult.assertExitCode(message, exitCode) would
not tell the user what the observed exit code was if message were non-null.
In the style of org.junit.Assert.assertEquals(message, expected, observed), if
message is non-null, it is prepended to JUnit's built-in messaging about the
inequality between expected and observed.

Test Plan: Sandcastle builds.
diff --git a/test/com/facebook/buck/testutil/integration/ProjectWorkspace.java b/test/com/facebook/buck/testutil/integration/ProjectWorkspace.java
index fe464d5..103eb97 100644
--- a/test/com/facebook/buck/testutil/integration/ProjectWorkspace.java
+++ b/test/com/facebook/buck/testutil/integration/ProjectWorkspace.java
@@ -159,22 +159,23 @@
       assertExitCode(null, exitCode);
     }
 
-    public void assertExitCode(String message, int exitCode) {
+    public void assertExitCode(@Nullable String message, int exitCode) {
       if (exitCode == getExitCode()) {
         return;
       }
 
-      String failureMessage = String.format("Expected exit code %d but was %d.", exitCode, getExitCode());
+      String failureMessage = String.format(
+          "Expected exit code %d but was %d.", exitCode, getExitCode());
+      if (message != null) {
+        failureMessage = message + " " + failureMessage;
+      }
+
       System.err.println("=== " + failureMessage + " ===");
       System.err.println("=== STDERR ===");
       System.err.println(getStderr());
       System.err.println("=== STDOUT ===");
       System.err.println(getStdout());
-      if (message != null) {
-        fail(message);
-      } else {
-        fail(failureMessage);
-      }
+      fail(failureMessage);
     }
   }