reap message enhancement for signals vs. exit codes

- If the process exited due to a signal, set the exit_code to the
-<SIGNAL> value to match the behavior of the Popen.returncode attribute
that is used in the other reap message.
This allows plugins that monitor the exit of processes to distinguish
between an actual return code > 0 and an exit due to a signal (i.e. a
segfault, SIGILL, SIGABRT, etc.)
Add a new stream class: WatchedFileStream.

- This stream class emulates the behavior of Python's WatchedFileHandler
logger utility, where if the log file is removed/renamed by an
external log rotation utility, the file will be reopened. This is very
useful for situations where circus is running a bunch of different
processes with different logging implementations and one external log
rotation tool is used so that all the different logging implementations
don't have to worry about log rotation.

- refactored common FileStream functionality into a base class that is
now shared between FileStream and WatchedFileStream.

- Allow users to specify WatchedFileStream in config files without a
fully qualified name.
- Suppressed the flake8 warning for an unused import as
WatchedFileStream needs to be in the globals dict

- Added WatchedFileStream tests in that mirror what is tested for FileStream,
plus one that tests the logrotate case

- Added docs for WatchedFileStream

- switched loggers from using FileHandler to WatchedFileHandler.
This change makes a seamless switch to using WatchedFileHandler
instead of FileHandler for the main logger and the builtin plugins.
If a system log rotation utility moves the circus log, circus will
continue to function fine when logging.

The only downside is a slight performance hit as WatchedFileHandler
stats the log file on each log call, but it seems like a good tradeoff
for a systems tool like circus to help ensure that the circus logs never
cause problems.
Merge pull request #724 from wynnw/feature/watched-file-handler

Feature/watched file handler
Add ipython shell command
Add debug_gc option
Flake8 fix
Merge pull request #734 from scottkmaxwell/ipython-shell-command

Add ipython shell command
Merge pull request #735 from scottkmaxwell/add-debug_gc-config-option

Add debug_gc option
allow case-sensitive env vars
Crate.io doesn't exists anymore.
Update installation.rst

Update compatibility notes regarding ZeroMQ versions and add detail about how this is determined by pyzmq dependency.
Oops.  Fix rst link syntax.
Add caveat about PyPy.
Merge pull request #741 from eikonomega/master

Update installation docs with more details on zeromq version support.
Use text_type instead of str to handle unicode.
Merge branch 'case-sensitive-cfg' -- Allow case sensitive environment variables
added randomize to run the tests in a random order
added randomize in the py26 reqs
add support for new psutil api
Merge pull request #747 from ticosax/call-function

add support for new psutil api