Revert "Use SimpleEntry in StorageMap."

This reverts commit fc3088d7b42e123df81de2879f8a6c7d0a2ba12e.

Breaks build. See:
http://build.gwtproject.org/job/gwt/168/testReport/com.google.gwt.storage.client/LocalStorageMapTest/

Change-Id: I668d8643eb700690c31907f72aae0c1172bc26f9
diff --git a/user/src/com/google/gwt/storage/client/StorageMap.java b/user/src/com/google/gwt/storage/client/StorageMap.java
index 37bce37..3c3ccac 100644
--- a/user/src/com/google/gwt/storage/client/StorageMap.java
+++ b/user/src/com/google/gwt/storage/client/StorageMap.java
@@ -58,19 +58,48 @@
   /*
    * Represents a Map.Entry to a Storage item
    */
-  private class StorageEntry extends SimpleEntry<String, String> {
+  private class StorageEntry implements Map.Entry<String, String> {
+    private final String key;
+
     public StorageEntry(String key) {
-      super(key, null);
+      this.key = key;
     }
 
     @Override
+    @SuppressWarnings("rawtypes")
+    public boolean equals(Object obj) {
+      if (obj == null) {
+        return false;
+      } else if (obj == this) {
+        return true;
+      } else if (!(obj instanceof Map.Entry)) {
+        return false;
+      }
+
+      Map.Entry e = (Map.Entry) obj;
+
+      return eq(key, e.getKey()) && eq(getValue(), e.getValue());
+    }
+
+    public String getKey() {
+      return key;
+    }
+
     public String getValue() {
-      return get(getKey());
+      return storage.getItem(key);
     }
 
     @Override
+    public int hashCode() {
+      String value = getValue();
+      return (key == null ? 0 : key.hashCode())
+          ^ (value == null ? 0 : value.hashCode());
+    }
+
     public String setValue(String value) {
-      return put(getKey(), value);
+      String oldValue = storage.getItem(key);
+      storage.setItem(key, value);
+      return oldValue;
     }
   }