**breaking change**: Switch Face and related classes to v2::KeyChain

security::v2::KeyChain is now exposed as ndn::KeyChain, which should
ensure that dependent code can be mostly compiled.  However, expect code
that explicitly uses the old KeyChain interface to be broken.

Change-Id: I7330d0250d92f3f0f2570ab6d0214ab3dfdd18cc
Refs: #3098
diff --git a/tools/ndnsec/main.cpp b/tools/ndnsec/main.cpp
index b86fee1..4dc7ee0 100644
--- a/tools/ndnsec/main.cpp
+++ b/tools/ndnsec/main.cpp
@@ -23,7 +23,7 @@
 
 #include "version.hpp"
 
-#include "security/key-chain.hpp"
+#include "security/v1/key-chain.hpp"
 #include "security/v1/certificate-subject-description.hpp"
 #include "security/v1/secured-bag.hpp"
 
diff --git a/tools/ndnsec/util.hpp b/tools/ndnsec/util.hpp
index f096515..c026852 100644
--- a/tools/ndnsec/util.hpp
+++ b/tools/ndnsec/util.hpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /**
- * Copyright (c) 2013-2016 Regents of the University of California.
+ * Copyright (c) 2013-2017 Regents of the University of California.
  *
  * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
  *
@@ -38,7 +38,7 @@
 #include <boost/exception/all.hpp>
 
 #include "encoding/buffer-stream.hpp"
-#include "security/key-chain.hpp"
+#include "security/v1/key-chain.hpp"
 #include "security/transform.hpp"
 #include "util/io.hpp"
 
@@ -137,34 +137,34 @@
     return this;
   }
 
-  virtual std::string
+  std::string
   name() const final
   {
     return std::string();
   }
 
   // There are no tokens for an AccumulatorType
-  virtual unsigned
+  unsigned
   min_tokens() const final
   {
     return 0;
   }
 
-  virtual unsigned
+  unsigned
   max_tokens() const final
   {
     return 0;
   }
 
   // Accumulating from different sources is silly.
-  virtual bool
+  bool
   is_composing() const final
   {
     return false;
   }
 
   // Requiring one or more appearances is unlikely.
-  virtual bool
+  bool
   is_required() const final
   {
     return false;
@@ -176,7 +176,7 @@
    * Every appearance of the option simply increments the value
    * There should never be any tokens.
    */
-  virtual void
+  void
   parse(boost::any& value_store,
         const std::vector<std::string>& new_tokens,
         bool utf8) const final
@@ -189,7 +189,7 @@
   /**
    * @brief If the option doesn't appear, this is the default value.
    */
-  virtual bool
+  bool
   apply_default(boost::any& value_store) const final
   {
     value_store = m_default;
@@ -199,7 +199,7 @@
   /**
    * @brief Notify the user function with the value of the value store.
    */
-  virtual void
+  void
   notify(const boost::any& value_store) const final
   {
     const T* val = boost::any_cast<T>(&value_store);
@@ -208,7 +208,7 @@
   }
 
 #if BOOST_VERSION >= 105900
-  virtual bool
+  bool
   adjacent_tokens_only() const final
   {
     return false;