face: Updating the way to select Controller

It is impossible to set Controller during construction of the face,
since all controllers implementation require face during construction.

Change-Id: Ib80f3f906d9849e4d89cfaccd6f957aac349c027
diff --git a/src/face.hpp b/src/face.hpp
index 895c39e..6a9a87c 100644
--- a/src/face.hpp
+++ b/src/face.hpp
@@ -61,14 +61,6 @@
   Face();
 
   /**
-   * @brief Create face, explicitly selecting which controller to use
-   *
-   * Controller controls the way prefixes are registered with local forwarder.
-   */
-  explicit
-  Face(const shared_ptr<Controller>& controller);
-
-  /**
    * @brief Create a new Face for communication with an NDN Forwarder using the default UnixTransport.
    * @param ioService A shared pointer to boost::io_service object that should control all IO operations
    */
@@ -106,13 +98,10 @@
        const shared_ptr<boost::asio::io_service>& ioService);
 
   /**
-   * @brief Create face, explicitly selecting which controller to use
-   *
-   * Controller controls the way prefixes are registered with local forwarder.
+   * @brief Set controller used for prefix registration
    */
-  Face(const shared_ptr<Transport>& transport,
-       const shared_ptr<boost::asio::io_service>& ioService,
-       const shared_ptr<Controller>& controller);
+  void
+  setController(const shared_ptr<Controller>& controller);
   
   /**
    * @brief Express Interest
@@ -214,8 +203,7 @@
 private:
   void
   construct(const shared_ptr<Transport>& transport,
-            const shared_ptr<boost::asio::io_service>& ioService,
-            const shared_ptr<Controller>& controller);
+            const shared_ptr<boost::asio::io_service>& ioService);
   
   struct ProcessEventsTimeout {};
   typedef std::list<shared_ptr<PendingInterest> > PendingInterestTable;