Add callback contexts

Add the notion of a callback context. This enables callbacks
to have logic around the conditions they were invoked in.

There are two context on which call back can be invoked
1) Startup: during startup all the call backs will be called
2) Signal: As part of condition match on the watched properties.

Callback would behave differently based on the context.
eg: eventCallback
1) Startup: Don't take any action.
2) Signal: Create the Dbus Object for the event.

Change-Id: If455558798ac3e44bbd8a93de0ce1b09d2e308ae
Signed-off-by: Ratan Gupta <ratagupt@in.ibm.com>
diff --git a/src/method.hpp b/src/method.hpp
index 66c19db..9475fb8 100644
--- a/src/method.hpp
+++ b/src/method.hpp
@@ -65,7 +65,7 @@
                   method(m) {}
 
         /** @brief Callback interface implementation. */
-        void operator()() override = 0;
+        void operator()(Context ctx) override = 0;
 
     protected:
         const std::string& bus;
@@ -100,7 +100,7 @@
               args(std::forward<MethodArgs>(arguments)...) {}
 
         /** @brief Callback interface implementation. */
-        void operator()() override
+        void operator()(Context ctx) override
         {
             std::experimental::apply(
                 detail::CallDBusMethod<DBusInterface, MethodArgs...>::op,