face: Enable KeyChain customization in DummyClientFace

This feature also required two new Face constructors

Change-Id: I25c6d9d0d94a065176ed348d25e7b99a6c7999c0
Refs: #3435
diff --git a/src/util/dummy-client-face.hpp b/src/util/dummy-client-face.hpp
index b5ec7d7..c9ea6fc 100644
--- a/src/util/dummy-client-face.hpp
+++ b/src/util/dummy-client-face.hpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /**
- * Copyright (c) 2013-2015 Regents of the University of California.
+ * Copyright (c) 2013-2016 Regents of the University of California.
  *
  * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
  *
@@ -56,9 +56,21 @@
   DummyClientFace(const Options& options = DummyClientFace::DEFAULT_OPTIONS);
 
   /**
+   * @brief Create a dummy face with internal IO service and the specified KeyChain
+   */
+  DummyClientFace(KeyChain& keyChain, const Options& options = DummyClientFace::DEFAULT_OPTIONS);
+
+  /**
    * @brief Create a dummy face with the provided IO service
    */
-  DummyClientFace(boost::asio::io_service& ioService, const Options& options = DummyClientFace::DEFAULT_OPTIONS);
+  DummyClientFace(boost::asio::io_service& ioService,
+                  const Options& options = DummyClientFace::DEFAULT_OPTIONS);
+
+  /**
+   * @brief Create a dummy face with the provided IO service and the specified KeyChain
+   */
+  DummyClientFace(boost::asio::io_service& ioService, KeyChain& keyChain,
+                  const Options& options = DummyClientFace::DEFAULT_OPTIONS);
 
   /** \brief cause the Face to receive a packet
    *  \tparam Packet either Interest or Data
@@ -133,6 +145,10 @@
    *  After .put, .processEvents must be called before this signal would be emitted.
    */
   Signal<DummyClientFace, lp::Nack> onSendNack;
+
+private:
+  std::unique_ptr<KeyChain> m_internalKeyChain;
+  KeyChain& m_keyChain;
 };
 
 template<>