model: Change NetDeviceFace into NetDeviceLinkService to match NFD 0.4+ Face model

ndnSIM (for now) intentionally uses LinkService instead of Transport for
optimization purposes and in order to preserve ns3::Packet Tags.  This
may be fixed in the future when there is a different mechanism to
propagate ns3 Tags or Tags are no longer necessary.

Change-Id: I2aeef8f37d587374a1c9fe04386e33b6fde83fe0
Refs: #3560
diff --git a/model/ndn-common.hpp b/model/ndn-common.hpp
index 237fc3e..7397de3 100644
--- a/model/ndn-common.hpp
+++ b/model/ndn-common.hpp
@@ -17,8 +17,8 @@
  * ndnSIM, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
  **/
 
-#ifndef NDN_COMMON_H
-#define NDN_COMMON_H
+#ifndef NDNSIM_NDN_COMMON_H
+#define NDNSIM_NDN_COMMON_H
 
 #include "ns3/nstime.h"
 #include "ns3/simulator.h"
@@ -35,6 +35,8 @@
 
 #include <ndn-cxx/util/time.hpp>
 
+#include "NFD/daemon/face/face.hpp"
+
 namespace nfd {
 }
 
@@ -50,6 +52,10 @@
 using namespace ::ndn::time;
 }
 
+namespace lp {
+using namespace ::ndn::lp;
+}
+
 using ::ndn::Exclude;
 
 using std::shared_ptr;
@@ -63,12 +69,30 @@
 using ::ndn::Block;
 using ::ndn::KeyChain;
 
+using ::nfd::Face;
+using ::ndn::util::FaceUri;
+
 #ifndef DOXYGEN
 // For python bindings
 namespace nfd = ::nfd;
 #endif // DOXYGEN
 
+using ::ndn::make_unique;
+
 } // namespace ndn
 } // namespace ns3
 
-#endif // NDN_COMMON_H
+namespace nfd {
+namespace face {
+
+inline std::ostream&
+operator<<(std::ostream& os, const Face& face)
+{
+  os << face.getLocalUri();
+  return os;
+}
+
+} // namespace face
+} // namespace nfd
+
+#endif // NDNSIM_NDN_COMMON_H