model: Implementing two more events for forwarding strategy: DidAddFibEntry and WillRemoveFibEntry

Currently, only DidAddFibEntry method is used and only in PerFibLimits
strategy.  Change logic in global routing helper: set per FIB limits only if
forwarding strategy has created a corresponding Limit object.
diff --git a/helper/ndn-global-routing-helper.cc b/helper/ndn-global-routing-helper.cc
index f87dfa8..35ed56d 100644
--- a/helper/ndn-global-routing-helper.cc
+++ b/helper/ndn-global-routing-helper.cc
@@ -281,17 +281,13 @@
                                     << " with delay " << i->second.get<2> ());
                     
                       Ptr<fib::Entry> entry = fib->Add (prefix, i->second.get<0> (), i->second.get<1> ());
-                      Ptr<Limits> limits = i->second.get<0> ()->GetObject<Limits> ();
-                    
-                      if (limits != 0 && limits->IsEnabled ())
+                      Ptr<Limits> faceLimits = i->second.get<0> ()->GetObject<Limits> ();
+
+                      Ptr<Limits> fibLimits = entry->GetObject<Limits> ();
+                      if (fibLimits != 0)
                         {
-                          ObjectFactory limitsFactory;
-                          limitsFactory.SetTypeId (limits->GetInstanceTypeId ());
-
-                          Ptr<Limits> entryLimits = limitsFactory.Create<Limits> ();
-                          entryLimits->SetLimits (limits->GetMaxRate (), 2*i->second.get<2> ());
-
-                          entry->AggregateObject (entryLimits);
+                          // if it was created by the forwarding strategy via DidAddFibEntry event
+                          fibLimits->SetLimits (faceLimits->GetMaxRate (), 2*i->second.get<2> () /*exact RTT*/);
                         }
                     }
 		}