'Registers the function to be notified of configuration updates. Listeners
are expected to be functors which accept (config, key).
:param functor listener: function to be notified when our configuration is changed
:param bool backfill: calls the function with our current values if **True**'

def add_listener(self, listener, backfill=True):

    with self._contents_lock:
        self._listeners.append(listener)
        if backfill:
            for key in self.keys():
                listener(self, key)
