rib: change FIB mocking mechanism

Previously, RIB test suites mock FIB updates by invoking RibManager
or Rib's private methods from a callback. In this commit, Rib class
exposes a `mockFibResponse` function variable, so that test cases
can directly specify FibUpdater's response without needing to invoke
private methods. This further allows replacing these private methods
with lambdas.

Also, logic for beginning RibUpdateBatch is abstracted out of control
command handlers, in preparation for PrefixAnnouncement-based RIB
update functions.

refs #4683

Change-Id: I0c95d8daa1458c704c7352a7809e6bed69134642
diff --git a/tests/rib/rib-manager.t.cpp b/tests/rib/rib-manager.t.cpp
index 44b7b29..6966018 100644
--- a/tests/rib/rib-manager.t.cpp
+++ b/tests/rib/rib-manager.t.cpp
@@ -65,7 +65,11 @@
     , m_fibUpdater(m_rib, m_nfdController)
     , m_manager(m_rib, m_face, m_nfdController, m_dispatcher)
   {
-    m_rib.m_onSendBatchFromQueue = bind(&RibManagerFixture::onSendBatchFromQueue, this, _1);
+    m_rib.mockFibResponse = [] (const RibUpdateBatch& batch) {
+      BOOST_CHECK(batch.begin() != batch.end());
+      return true;
+    };
+    m_rib.wantMockFibResponseOnce = false;
 
     if (m_status.isLocalhostConfigured) {
       m_manager.applyLocalhostConfig(getValidatorConfigSection(), "test");
@@ -150,17 +154,6 @@
       .setOrigin(ndn::nfd::ROUTE_ORIGIN_NLSR);
   }
 
-  void
-  onSendBatchFromQueue(const RibUpdateBatch& batch)
-  {
-    BOOST_ASSERT(batch.begin() != batch.end());
-    RibUpdate update = *(batch.begin());
-
-    // Simulate a successful response from NFD
-    m_rib.onFibUpdateSuccess(batch, m_fibUpdater.m_inheritedRoutes,
-                             bind(&RibManager::onRibUpdateSuccess, &m_manager, update));
-  }
-
 public:
   enum class CheckCommandResult {
     OK,