core: make SizeCounter use pointer instead of reference

Restore virtual inheritance of GenericLinkServiceCounters in
GenericLinkService

refs #3941

Change-Id: I368e4694fee7bc97173fddfc81d0c679da0d6eed
diff --git a/daemon/face/generic-link-service.cpp b/daemon/face/generic-link-service.cpp
index 9d1d0fc..20c1cb8 100644
--- a/daemon/face/generic-link-service.cpp
+++ b/daemon/face/generic-link-service.cpp
@@ -31,11 +31,6 @@
 
 NFD_LOG_INIT("GenericLinkService");
 
-GenericLinkServiceCounters::GenericLinkServiceCounters(const LpReassembler& reassembler)
-  : nReassembling(reassembler)
-{
-}
-
 GenericLinkService::Options::Options()
   : allowLocalFields(false)
   , allowFragmentation(false)
@@ -44,14 +39,14 @@
 }
 
 GenericLinkService::GenericLinkService(const GenericLinkService::Options& options)
-  : GenericLinkServiceCounters(m_reassembler)
-  , m_options(options)
+  : m_options(options)
   , m_fragmenter(m_options.fragmenterOptions, this)
   , m_reassembler(m_options.reassemblerOptions, this)
   , m_reliability(m_options.reliabilityOptions, this)
   , m_lastSeqNo(-2)
 {
   m_reassembler.beforeTimeout.connect(bind([this] { ++this->nReassemblyTimeouts; }));
+  nReassembling.observe(&m_reassembler);
 }
 
 void