Add deferrable callbacks

Deferrable callbacks delay callback invocation until a
pre configured length of time has elapsed.  One example
scenario where deferrable callbacks help is to avoid
oscillation when testing a condition and making callbacks
frequently.

Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
Change-Id: I180c99b57ec1c9bde4da76d947a026f809341c8a
diff --git a/src/pdmgen.py b/src/pdmgen.py
index 5d4bf29..5e88e2c 100755
--- a/src/pdmgen.py
+++ b/src/pdmgen.py
@@ -532,6 +532,7 @@
     def __init__(self, *a, **kw):
         self.condition = kw.pop('condition')
         self.instance = kw.pop('instance')
+        self.defer = kw.pop('defer', None)
         super(ConditionCallback, self).__init__(**kw)
 
     def factory(self, objs):
@@ -580,6 +581,7 @@
 
     def __init__(self, *a, **kw):
         self.callback = kw.pop('callback')
+        self.defer = kw.pop('defer', None)
         super(Condition, self).__init__(**kw)
 
     def factory(self, objs):
@@ -592,6 +594,7 @@
             'callback': 'conditional',
             'instance': self.callback,
             'name': self.name,
+            'defer': self.defer
         }
 
         callback = ConditionCallback(**args)