face: InternalForwarderTransport & InternalClientTransport

InternalForwarderTransport and InternalClientTransport are a pair of forwarder-side
and client-side transports that can be connected with each other, so that link-layer
packets sent by one transport can be received by the other.

They are used together with LpFace, GenericLinkService, and ndn::Face to replace
InternalFace and InternalClientFace used by NFD management.

They also replace TopologyForwarderTransport and TopologyClientTransport used by
TopologyTester of forwarding unit tests.

refs #3225

Change-Id: I5b6b579c43dfd0b1b9def5100be2ce516219cb74
diff --git a/daemon/nfd.cpp b/daemon/nfd.cpp
index 44b0579..2676a3a 100644
--- a/daemon/nfd.cpp
+++ b/daemon/nfd.cpp
@@ -32,7 +32,6 @@
 #include "fw/forwarder.hpp"
 #include "face/null-face.hpp"
 #include "face/internal-face.hpp"
-#include "face/internal-client-face.hpp"
 #include "mgmt/fib-manager.hpp"
 #include "mgmt/face-manager.hpp"
 #include "mgmt/strategy-choice-manager.hpp"
@@ -145,9 +144,8 @@
 void
 Nfd::initializeManagement()
 {
-  m_internalFace = make_shared<InternalFace>();
+  std::tie(m_internalFace, m_internalClientFace) = face::makeInternalFace(m_keyChain);
   m_forwarder->getFaceTable().addReserved(m_internalFace, FACEID_INTERNAL_FACE);
-  m_internalClientFace = makeInternalClientFace(m_internalFace, m_keyChain);
   m_dispatcher.reset(new ndn::mgmt::Dispatcher(*m_internalClientFace, m_keyChain));
 
   m_validator.reset(new CommandValidator());