Add code to support 2-way communication between extensions and renderers.  The code is almost fully symmetrical, except that right now a channel can only be opened to an extension (by ID).  It should be trivial to open a channel to a tab, once we have a solid tab API.
Review URL: http://codereview.chromium.org/56037

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@13057 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/chrome/common/ipc_message_utils.h b/chrome/common/ipc_message_utils.h
index ac3cbef..6e82d40 100644
--- a/chrome/common/ipc_message_utils.h
+++ b/chrome/common/ipc_message_utils.h
@@ -1247,9 +1247,12 @@
                      LogData* data);
 
 // Used for synchronous messages.
-template <class SendParam, class ReplyParam>
+template <class SendParamType, class ReplyParamType>
 class MessageWithReply : public SyncMessage {
  public:
+  typedef SendParamType SendParam;
+  typedef ReplyParamType ReplyParam;
+
   MessageWithReply(int32 routing_id, uint16 type,
                    const SendParam& send, const ReplyParam& reply)
       : SyncMessage(routing_id, type, PRIORITY_NORMAL,