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.

Conflicts:
	circus/stream/file_stream.py
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.)

Conflicts:
	circus/watcher.py
import WatchedFileStream so it's name is resolvable

- 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
Optimize loading of circus standard output types

Conflicts:
	circus/stream/__init__.py
Add a --nostop option to the rm command

- This supports use cases for managing dynamically added processes
which run for a unknown amount of time. The processes can be managed
and respawned while they are running. However, when the processes
know they are done they should not be respawned anymore. The
processes (which are the only ones that know when they should be
completely stopped) can then tell circusd to remove them but not try
to kill them. The processes can then manage their own exit and not
have to worry about race conditions and syncronicity issues inherent
in trying to send a message to circusd which involves circusd trying
to kill the client sending the message.