make sure we have >= 13.1.x
fixed the check_delay typo and allow it to be a float - fixes #651
fixed the check_delay typo and allow it to be a float - fixes #651
Merge pull request #647 from mozilla-services/pyzmq-version

make sure we have >= 13.1.x
watcher:  fix bad comparison to None

When a process exits with status == 0 and is reaped by the arbiter,
watcher.reap_process incorrectly tries to reap the process itself due to
testing status as a boolean and not testing if the status is None.
watcher:  notify process exit code when reaping

Add the exit code of the reaped process to the notify event.
process:  remove debuglog from returncode
Merge pull request #652 from jsbronder/reap_with_exit_status

Reap with exit status
watcher:  restart after command only if running

After processing a command from the client, only restart the watcher if
the watcher was already running.  This allows the client to first set
options on the watcher before starting it.
Merge pull request #654 from jsbronder/restart

watcher:  restart after command only if running
Add helper methods to CircusPlugin for parsing the received data

Before this change, each plug-in had to split data into "topic, msg", the u(topic).split('.'), then implicitly know that topic_parts[1] was the watcher name and topic_parts[2] was the action. Also, if the plug-in wanted to parse the msg portion, it needed to import zmq.utils.jsonapi. Not at all obvious to a plug-in writer.
Change buffering in docs to 1 since 0 doesn't work for text files on Py3
Fix line length for flake8
Merge pull request #657 from scottkmaxwell/parsing-helpers-for-plugins

Parsing helpers for plugins
Correct a typo in hooks' documentation
Merge pull request #659 from Khady/patch-1

Correct a typo in hooks' documentation
watcher:  drop log message from error to debug

If a restart or stop is issued via circusctl, it is perfectly reasonable
that a watched process will already be reaped.

See https://github.com/mozilla-services/circus/issues/658
Added after_spawn hook with tests and docs

I also had to fix the logic for before_spawn. Returning False prevented the process from running, but did not set the watcher to 'stopped' if all spawns were prevented, causing manage_processes to try to relaunch it again immediately.
Handle refused connection more immediately
Remove unnecessary socket constructor