Rewrite String.valueOf for j2cl.

Change-Id: I8355bf1b04a37e2bca3f4c39738cd4327378f9ae
Review-Link: https://gwt-review.googlesource.com/#/c/13825/
diff --git a/user/super/com/google/gwt/emul/java/lang/String.java b/user/super/com/google/gwt/emul/java/lang/String.java
index 85d9059..763bae2 100644
--- a/user/super/com/google/gwt/emul/java/lang/String.java
+++ b/user/super/com/google/gwt/emul/java/lang/String.java
@@ -152,8 +152,10 @@
     return "" + x;
   }
 
+  // valueOf needs to be treated special:
+  // J2cl uses it for String concat and thus it can not use string concatenation itself.
   public static String valueOf(Object x) {
-    return "" + x;
+    return x == null ? "null" : x.toString();
   }
 
   // CHECKSTYLE_OFF: This class has special needs.