model: Major API changes

Interest and ContentObject are no longer derived from Header class.
Instead, they are encapsulating payload and, optionally, wire-formatted
Packet object.

Refs #1005 (http://redmine.named-data.net/)
diff --git a/model/fw/ndn-forwarding-strategy.h b/model/fw/ndn-forwarding-strategy.h
index 45ccc55..49b034b 100644
--- a/model/fw/ndn-forwarding-strategy.h
+++ b/model/fw/ndn-forwarding-strategy.h
@@ -49,7 +49,7 @@
     public Object
 {
 public:
-  static TypeId GetTypeId (void);
+  static TypeId GetTypeId ();
 
   /**
    * @brief Helper function to retrieve logging name for the forwarding strategy
@@ -66,27 +66,23 @@
    * \brief Actual processing of incoming Ndn interests. Note, interests do not have payload
    *
    * Processing Interest packets
-   * @param face    incoming face
-   * @param header  deserialized Interest header
-   * @param origPacket  original packet
+   * @param face     incoming face
+   * @param interest Interest packet
    */
   virtual void
   OnInterest (Ptr<Face> face,
-              Ptr<const Interest> header,
-              Ptr<const Packet> payload);
+              Ptr<Interest> interest);
 
   /**
    * \brief Actual processing of incoming Ndn content objects
    *
    * Processing ContentObject packets
    * @param face    incoming face
-   * @param header  deserialized ContentObject header
-   * @param payload data packet payload
+   * @param data    Data packet
    */
   virtual void
   OnData (Ptr<Face> face,
-          Ptr<const ContentObject> header,
-          Ptr<Packet> payload);
+          Ptr<ContentObject> data);
 
   /**
    * @brief Event fired just before PIT entry is removed by timeout
@@ -143,8 +139,7 @@
    */
   virtual void
   DidCreatePitEntry (Ptr<Face> inFace,
-                     Ptr<const Interest> header,
-                     Ptr<const Packet> payload,
+                     Ptr<const Interest> interest,
                      Ptr<pit::Entry> pitEntry);
 
   /**
@@ -153,13 +148,12 @@
    * Note that this call can be called only for non-similar Interest (i.e., there is an attempt to create a new PIT entry).
    * For any non-similar Interests, either FailedToCreatePitEntry or DidCreatePitEntry is called.
    *
-   * @param inFace  incoming face
-   * @param header  deserialized Interest header
+   * @param inFace   incoming face
+   * @param interest Interest packet
    */
   virtual void
   FailedToCreatePitEntry (Ptr<Face> inFace,
-                          Ptr<const Interest> header,
-                          Ptr<const Packet> payload);
+                          Ptr<const Interest> interest);
 
   /**
    * @brief An event that is fired every time a duplicated Interest is received
@@ -167,15 +161,14 @@
    * This even is the last action that is performed before the Interest processing is halted
    *
    * @param inFace  incoming face
-   * @param header  deserialized Interest header
+   * @param interest Interest packet
    * @param pitEntry an existing PIT entry, corresponding to the duplicated Interest
    *
    * @see DidReceiveDuplicateInterest, DidSuppressSimilarInterest, DidForwardSimilarInterest, ShouldSuppressIncomingInterest
    */
   virtual void
   DidReceiveDuplicateInterest (Ptr<Face> inFace,
-                               Ptr<const Interest> header,
-                               Ptr<const Packet> payload,
+                               Ptr<const Interest> interest,
                                Ptr<pit::Entry> pitEntry);
 
   /**
@@ -184,15 +177,14 @@
    * This even is the last action that is performed before the Interest processing is halted
    *
    * @param inFace  incoming face
-   * @param header  deserialized Interest header
+   * @param interest Interest packet
    * @param pitEntry an existing PIT entry, corresponding to the duplicated Interest
    *
    * @see DidReceiveDuplicateInterest, DidForwardSimilarInterest, ShouldSuppressIncomingInterest
    */
   virtual void
   DidSuppressSimilarInterest (Ptr<Face> inFace,
-                              Ptr<const Interest> header,
-                              Ptr<const Packet> payload,
+                              Ptr<const Interest> interest,
                               Ptr<pit::Entry> pitEntry);
 
   /**
@@ -201,15 +193,14 @@
    * This even is fired just before handling the Interest to PropagateInterest method
    *
    * @param inFace  incoming face
-   * @param header  deserialized Interest header
+   * @param interest Interest packet
    * @param pitEntry an existing PIT entry, corresponding to the duplicated Interest
    *
    * @see DidReceiveDuplicateInterest, DidSuppressSimilarInterest, ShouldSuppressIncomingInterest
    */
   virtual void
   DidForwardSimilarInterest (Ptr<Face> inFace,
-                             Ptr<const Interest> header,
-                             Ptr<const Packet> payload,
+                             Ptr<const Interest> interest,
                              Ptr<pit::Entry> pitEntry);
 
   /**
@@ -219,15 +210,14 @@
    * and retransmitted Interest cannot by forwarded.  For more details, refer to the implementation.
    *
    * @param inFace  incoming face
-   * @param header  deserialized Interest header
+   * @param interest Interest header
    * @param pitEntry an existing PIT entry, corresponding to the duplicated Interest
    *
    * @see DetectRetransmittedInterest
    */
   virtual void
   DidExhaustForwardingOptions (Ptr<Face> inFace,
-                               Ptr<const Interest> header,
-                               Ptr<const Packet> payload,
+                               Ptr<const Interest> interest,
                                Ptr<pit::Entry> pitEntry);
 
   /**
@@ -239,14 +229,13 @@
    * already has inFace (i.e., a similar interest is received on the same face more than once).
    *
    * @param inFace  incoming face
-   * @param header  deserialized Interest header
+   * @param interest Interest header
    * @param pitEntry an existing PIT entry, corresponding to the duplicated Interest
    * @return true if Interest should be considered as retransmitted
    */
   virtual bool
   DetectRetransmittedInterest (Ptr<Face> inFace,
-                               Ptr<const Interest> header,
-                               Ptr<const Packet> payload,
+                               Ptr<const Interest> interest,
                                Ptr<pit::Entry> pitEntry);
 
   /**
@@ -267,44 +256,38 @@
    * Note that when Interest is satisfied from the cache, incoming face will be 0
    *
    * @param inFace  incoming face
-   * @param header  deserialized ContentObject header
-   * @param payload ContentObject payload
+   * @param data    Data packet
    * @param pitEntry an existing PIT entry, corresponding to the duplicated Interest
    */
   virtual void
   SatisfyPendingInterest (Ptr<Face> inFace, // 0 allowed (from cache)
-                          Ptr<const ContentObject> header,
-                          Ptr<const Packet> payload,
+                          Ptr<const ContentObject> data,
                           Ptr<pit::Entry> pitEntry);
 
   /**
    * @brief Event which is fired just after data was send out on the face
    *
-   * @param inFace     incoming face of the ContentObject
+   * @param inFace   incoming face of the ContentObject
    * @param outFace  outgoing face
-   * @param header  deserialized ContentObject header
-   * @param payload ContentObject payload
+   * @param data     Data packet
    * @param pitEntry an existing PIT entry, corresponding to the duplicated Interest
    */
   virtual void
   DidSendOutData (Ptr<Face> inFace,
                   Ptr<Face> outFace,
-                  Ptr<const ContentObject> header,
-                  Ptr<const Packet> payload,
+                  Ptr<const ContentObject> data,
                   Ptr<pit::Entry> pitEntry);
 
   /**
    * @brief Event which is fired every time a requested (solicited) DATA packet (there is an active PIT entry) is received
    *
    * @param inFace  incoming face
-   * @param header  deserialized ContentObject header
-   * @param payload ContentObject payload
+   * @param data    Data packet
    * @param didCreateCacheEntry flag indicating whether a cache entry was added for this data packet or not (e.g., packet already exists in cache)
    */
   virtual void
   DidReceiveSolicitedData (Ptr<Face> inFace,
-                           Ptr<const ContentObject> header,
-                           Ptr<const Packet> payload,
+                           Ptr<const ContentObject> data,
                            bool didCreateCacheEntry);
 
   /**
@@ -314,14 +297,12 @@
    * attribute CacheUnsolicitedData true
    *
    * @param inFace  incoming face
-   * @param header  deserialized ContentObject header
-   * @param payload ContentObject payload
+   * @param data    Data packet
    * @param didCreateCacheEntry flag indicating whether a cache entry was added for this data packet or not (e.g., packet already exists in cache)
    */
   virtual void
   DidReceiveUnsolicitedData (Ptr<Face> inFace,
-                             Ptr<const ContentObject> header,
-                             Ptr<const Packet> payload,
+                             Ptr<const ContentObject> data,
                              bool didCreateCacheEntry);
 
   /**
@@ -333,13 +314,12 @@
    * For more details, refer to the source code.
    *
    * @param inFace  incoming face
-   * @param header  deserialized ContentObject header
+   * @param interest Interest packet
    * @param payload ContentObject payload
    */
   virtual bool
   ShouldSuppressIncomingInterest (Ptr<Face> inFace,
-                                  Ptr<const Interest> header,
-                                  Ptr<const Packet> payload,
+                                  Ptr<const Interest> interest,
                                   Ptr<pit::Entry> pitEntry);
 
   /**
@@ -352,7 +332,7 @@
    *
    * @param inFace     incoming face of the Interest
    * @param outFace    proposed outgoing face of the Interest
-   * @param header     parsed Interest header
+   * @param interest   Interest packet
    * @param pitEntry   reference to PIT entry (reference to corresponding FIB entry inside)
    *
    * @see DetectRetransmittedInterest
@@ -360,8 +340,7 @@
   virtual bool
   CanSendOutInterest (Ptr<Face> inFace,
                       Ptr<Face> outFace,
-                      Ptr<const Interest> header,
-                      Ptr<const Packet> payload,
+                      Ptr<const Interest> interest,
                       Ptr<pit::Entry> pitEntry);
 
   /**
@@ -371,7 +350,7 @@
    *
    * @param inFace     incoming face of the Interest
    * @param outFace    proposed outgoing face of the Interest
-   * @param header     parsed Interest header
+   * @param interest Interest packet
    * @param pitEntry   reference to PIT entry (reference to corresponding FIB entry inside)
    *
    * @see CanSendOutInterest
@@ -379,8 +358,7 @@
   virtual bool
   TrySendOutInterest (Ptr<Face> inFace,
                       Ptr<Face> outFace,
-                      Ptr<const Interest> header,
-                      Ptr<const Packet> payload,
+                      Ptr<const Interest> interest,
                       Ptr<pit::Entry> pitEntry);
 
   /**
@@ -388,13 +366,13 @@
    *
    * @param inFace     incoming face of the Interest
    * @param outFace    outgoing face of the Interest
-   * @param header     parsed Interest header
+   * @param interest Interest packet
    * @param pitEntry   reference to PIT entry (reference to corresponding FIB entry inside)
    */
   virtual void
   DidSendOutInterest (Ptr<Face> inFace,
                       Ptr<Face> outFace,
-                      Ptr<const Interest> header,
+                      Ptr<const Interest> interest,
                       Ptr<pit::Entry> pitEntry);
 
   /**
@@ -404,15 +382,14 @@
    * PIT entry lifetime, calling DoPropagateInterest, and retransmissions (enabled by default).
    *
    * @param inFace     incoming face
-   * @param header     Interest header
+   * @param interest   Interest packet
    * @param pitEntry   reference to PIT entry (reference to corresponding FIB entry inside)
    *
    * @see DoPropagateInterest
    */
   virtual void
   PropagateInterest (Ptr<Face> inFace,
-                     Ptr<const Interest> header,
-                     Ptr<const Packet> payload,
+                     Ptr<const Interest> interest,
                      Ptr<pit::Entry> pitEntry);
 
   /**
@@ -426,7 +403,7 @@
    * PIT entry lifetime, calling DoPropagateInterest, as well as perform retransmissions (enabled by default).
    *
    * @param inFace     incoming face
-   * @param header     Interest header
+   * @param interest   Interest packet
    * @param pitEntry   reference to PIT entry (reference to corresponding FIB entry inside)
    *
    * @return true if interest was successfully propagated, false if all options have failed
@@ -435,8 +412,7 @@
    */
   virtual bool
   DoPropagateInterest (Ptr<Face> inFace,
-                       Ptr<const Interest> header,
-                       Ptr<const Packet> payload,
+                       Ptr<const Interest> interest,
                        Ptr<pit::Entry> pitEntry) = 0;
 
 protected:
@@ -453,27 +429,27 @@
   bool m_cacheUnsolicitedData;
   bool m_detectRetransmissions;
 
-  TracedCallback<Ptr<const Interest>, Ptr<const Packet>,
+  TracedCallback<Ptr<const Interest>,
                  Ptr<const Face> > m_outInterests; ///< @brief Transmitted interests trace
 
-  TracedCallback<Ptr<const Interest>, Ptr<const Packet>,
+  TracedCallback<Ptr<const Interest>,
                  Ptr<const Face> > m_inInterests; ///< @brief trace of incoming Interests
 
-  TracedCallback<Ptr<const Interest>, Ptr<const Packet>,
+  TracedCallback<Ptr<const Interest>,
                  Ptr<const Face> > m_dropInterests; ///< @brief trace of dropped Interests
 
   ////////////////////////////////////////////////////////////////////
   ////////////////////////////////////////////////////////////////////
   ////////////////////////////////////////////////////////////////////
 
-  TracedCallback<Ptr<const ContentObject>, Ptr<const Packet>,
+  TracedCallback<Ptr<const ContentObject>,
                  bool /*from cache*/,
                  Ptr<const Face> > m_outData; ///< @brief trace of outgoing Data
 
-  TracedCallback<Ptr<const ContentObject>, Ptr<const Packet>,
+  TracedCallback<Ptr<const ContentObject>,
                  Ptr<const Face> > m_inData; ///< @brief trace of incoming Data
 
-  TracedCallback<Ptr<const ContentObject>, Ptr<const Packet>,
+  TracedCallback<Ptr<const ContentObject>,
                   Ptr<const Face> > m_dropData;  ///< @brief trace of dropped Data
 
   ////////////////////////////////////////////////////////////////////