Implementing notion of default routes (useful for Flooding scenarios)

Also, correcting SEGFAULT upon termination (when apps was destroyed
after ccnx stack)

Correcting LongestPrefixMatch to be able to perform default match
diff --git a/model/ccnx-fib.cc b/model/ccnx-fib.cc
index 0df2ded..89e5231 100644
--- a/model/ccnx-fib.cc
+++ b/model/ccnx-fib.cc
@@ -182,7 +182,7 @@
 {
   const CcnxNameComponents &name = interest.GetName ();
   for (size_t componentsCount = name.GetComponents ().size ();
-       componentsCount > 0;
+       componentsCount >= 0;
        componentsCount--)
     {
       CcnxNameComponents subPrefix (name.GetSubComponents (componentsCount));
diff --git a/model/ccnx-l3-protocol.cc b/model/ccnx-l3-protocol.cc
index 17dc335..49031c7 100644
--- a/model/ccnx-l3-protocol.cc
+++ b/model/ccnx-l3-protocol.cc
@@ -176,7 +176,7 @@
   face->RegisterProtocolHandler (MakeNullCallback<void,const Ptr<CcnxFace>&,const Ptr<const Packet>&> ());
 
   // just to be on a safe side. Do the process in two steps
-  std::list<CcnxPitEntryContainer::type::iterator> entriesToRemoves; 
+  std::list<boost::reference_wrapper<const CcnxPitEntry> > entriesToRemoves;
   BOOST_FOREACH (const CcnxPitEntry &pitEntry, *m_pit)
     {
       m_pit->modify (m_pit->iterator_to (pitEntry),
@@ -187,12 +187,12 @@
       if (pitEntry.m_fibEntry.m_faces.size () == 1 &&
           pitEntry.m_fibEntry.m_faces.begin ()->m_face == face)
         {
-          entriesToRemoves.push_back (m_pit->iterator_to (pitEntry));
+          entriesToRemoves.push_back (boost::cref (pitEntry));
         }
     }
-  BOOST_FOREACH (CcnxPitEntryContainer::type::iterator entry, entriesToRemoves)
+  BOOST_FOREACH (const CcnxPitEntry &removedEntry, entriesToRemoves)
     {
-      m_pit->erase (entry);
+      m_pit->erase (m_pit->iterator_to (removedEntry));
     }
 
   CcnxFaceList::iterator face_it = find (m_faces.begin(), m_faces.end(), face);
diff --git a/model/ccnx-name-components.cc b/model/ccnx-name-components.cc
index b551733..a7066de 100644
--- a/model/ccnx-name-components.cc
+++ b/model/ccnx-name-components.cc
@@ -58,7 +58,7 @@
 std::list<boost::reference_wrapper<const std::string> >
 CcnxNameComponents::GetSubComponents (size_t num) const
 {
-  NS_ASSERT_MSG (1<=num && num<=m_prefix.size (), "Invalid number of subcomponents requested");
+  NS_ASSERT_MSG (0<=num && num<=m_prefix.size (), "Invalid number of subcomponents requested");
   
   std::list<boost::reference_wrapper<const std::string> > subComponents;
   std::list<std::string>::const_iterator component = m_prefix.begin();