Make dirwatch more resilient

If the reporting function `f` throws an exception the agent used would
enter in fail mode and stop polling for changes.

Now if an exception occurs in `f`, the exception is reported and the
agent keeps working.
Now the default mode is continue

If an exception happened inside wait-for-events the agent would not
enter in an error state.

No situation where an exception in wait-for-events was found, but better
be safe.