Add alerts.Dispatcher with alert cancelation.

This is a work-in-process which adds the following features:

(!) This change modifies alerting subject/message. Will fix.

* Monitoring no longer sends alerts, it updates the dispatcher.

* Dispatcher powered by coroutines
  - Receives "update" messages from the monitor.
  - An update can either set, or cancel an alert.
  - Conditional waiting time read from the config
* Handles knowledge of various alert engines.
* Iteratively fires off all alerts for a given path config.

* Tests:
  - Dispatcher alerting
  - Dispatcher cancellation
  - Monitoring contacts dispatcher

* Todo:
  - Add a test that monitor contact dispatcher *async*.
  - Better naming for "cancel_timeout". Consider "alert_wait_seconds"