goprotobuf: Ensure GetExtension returns the same result when called on a freshly unmarshaled message.

LGTM=djd
R=djd
CC=golang-codereviews
https://codereview.appspot.com/178920043
diff --git a/proto/extensions.go b/proto/extensions.go
index e592053..fca7bde 100644
--- a/proto/extensions.go
+++ b/proto/extensions.go
@@ -227,7 +227,8 @@
 		return nil, err
 	}
 
-	e, ok := pb.ExtensionMap()[extension.Field]
+	emap := pb.ExtensionMap()
+	e, ok := emap[extension.Field]
 	if !ok {
 		return nil, ErrMissingExtension
 	}
@@ -252,6 +253,7 @@
 	e.value = v
 	e.desc = extension
 	e.enc = nil
+	emap[extension.Field] = e
 	return e.value, nil
 }