Multiple unrelated changes. Read commit details.

* Move zk lock from alerter to dispatcher
 - `AlerterBase` is nearly useless, but I have a gut feeling it'll be
   useful again later
* Don't pass the entire "data" object to `Dispatcher`. Only pass the
  needed information.
* Standardize "action" values
* Merge `update()` and `_update()` methods.
* Refactor async sleep function
* Merge `set_status()` and `get_status()` into `_path_status()`
* `Monitor._get_compliance` now returns (State, Reason) tuple
* Instantiate `Dispatcher` object in "runserver"

* Tests for everything above.