core: drop std::function and ndn::Exclude from common.hpp, add ndn::optional

Change-Id: Ie3983d8b6f9929430efd8ada8d942e3f95755cd4
diff --git a/core/manager-base.hpp b/core/manager-base.hpp
index 3d0a465..cddb7c1 100644
--- a/core/manager-base.hpp
+++ b/core/manager-base.hpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/**
- * Copyright (c) 2014-2017,  Regents of the University of California,
+/*
+ * Copyright (c) 2014-2018,  Regents of the University of California,
  *                           Arizona Board of Regents,
  *                           Colorado State University,
  *                           University Pierre & Marie Curie, Sorbonne University,
@@ -72,10 +72,10 @@
 
 PUBLIC_WITH_TESTS_ELSE_PROTECTED: // registrations to the dispatcher
   // difference from mgmt::ControlCommand: accepts nfd::ControlParameters
-  typedef function<void(const ControlCommand& command,
-                        const Name& prefix, const Interest& interest,
-                        const ControlParameters& parameters,
-                        const ndn::mgmt::CommandContinuation done)> ControlCommandHandler;
+  using ControlCommandHandler = std::function<void(const ControlCommand& command,
+                                                   const Name& prefix, const Interest& interest,
+                                                   const ControlParameters& parameters,
+                                                   const ndn::mgmt::CommandContinuation done)>;
 
   template<typename Command>
   void