model: Adding "new" content store with ability to track lifetime of entries

Available options for ndnStackHelper.SetContentStore:
- ns3::ndn::cs::Stats::Lru
- ns3::ndn::cs::Stats::Random
- ns3::ndn::cs::Stats::Fifo

Tracked events include 0-lifetime entries, i.e., when entries are not stored at all.

Config::ConnectWithoutContext ("/NodeList/1/$ns3::ndn::cs::Stats::Random/WillRemoveEntry", MakeCallback (CacheEntryRemoved));

Prototype for the callback is: void (*)(Ptr<const ndn::cs::Entry> entry, Time lifetime)
diff --git a/utils/trie/detail/multi-policy-container.h b/utils/trie/detail/multi-policy-container.h
index 35119cb..c1251e9 100644
--- a/utils/trie/detail/multi-policy-container.h
+++ b/utils/trie/detail/multi-policy-container.h
@@ -113,6 +113,17 @@
                                                 boost::mpl::_1/*empty/previous*/,
                                                 policy_wrap<Base, boost::mpl::_2>/*element in vector*/>
                               >::type super;
+
+  typedef typename boost::mpl::at_c<Vector, 0>::type::iterator iterator;
+  typedef typename boost::mpl::at_c<Vector, 0>::type::const_iterator const_iterator;
+
+  iterator begin ()             { return this->get<0> ().begin (); }
+  const_iterator begin () const { return this->get<0> ().begin (); }
+
+  iterator end ()             { return this->get<0> ().end (); }
+  const_iterator end () const { return this->get<0> ().end (); }
+
+  size_t size () const { return this->get<0> ().size (); }
   
   multi_policy_container (Base &base)
   : super (base)