Allow INI/JSON/YAML configuration for logging

In addition to the existing simple logging configuration that
can be specified in the circus.ini file, this commit adds support
for fully customizing the logging including handlers and formatters.
You can specify any of the handlers built in to in Python, such as
syslog, or write your own.

This is achieved by referencing an INI file, a JSON file or a YAML
file. The INI file format is read by Python's
`logging.config.fileConfig()` function.  The JSON file is read
into the `logging.config.dictConfig()` function.  If PyYAML is
importable then this type of file is also read in the same way
as JSON.

You can share the same logging configuration file with other
frameworks that support this kind of logging configuration
such as Django.

To test this, we add some tests that start Circusd as a child
process because the logging configuration is applied to the
entire Python interpreter.
Fix errors with last version of flake8
Use last version of flake8 in requirements
Merge pull request #757 from k4nar/pep8

Update to flake8 version 2.1
Merge pull request #706 from jwal/master

Allow INI/JSON/YAML configuration for logging
Update circus.upstart, documentation and rename circus.ini to circusd.ini

r=Natim
Allow sending arbitrary signals to child procs via resource watcher. Refs #756

Previously it was impossible to monitor the resource consumption of child processes. This doesn't affect cases where one mind bind to a file descriptor like Chausette and therefore use multiple top-level processes. However, there are cases where you might run processes under gunicorn - or similar - and have the master process sending off to the application that handles the request. In these cases, the master process will not feature the resource usage you might otherwise see.

You can now define the following config variables in the `resource_watcher` config:

- `process_children`: (boolean default False) Whether or not to also process child processes in determining min/max resource usage
- `child_signal`: (int default signal.SIGTERM) An integer mapping to a signal in the POSIX standard. Note that this may change from system to system re: the python implementation of the signal library.

In all cases, the original implementation of grouping master processes together stays the same. When `process_children` is set to True, each child process has it's resource consumption aggregated. If the resource consumption is higher than that defined by the resource_watcher config, then the signal specified in `child_signal` is sent to the process.

This commit also fixes the issue where not all counters were properly reset after restarting a watcher.

r=Natim
Added os.initgroups call to Process in order to initialize all groups correctly
Default gid to uid main group.
bypass setsockopt() calls on weird distros - see #699