this is a fix for problems where the valid group list for a user gets lost. For example, if a user is an explicit member of one group (different from their primary group), the call to setgid after setgroups will cause the process to not have the full group rights of the user. Including the primary gid as the first group in the list avoids this problem. Not sure if this is a python bug, or a problem with the underlying system setgroups/getgroups api's - but this is a safe workaround.
Clearing parse warnings at every parse config call.

Without this change, configurations that generated parse
warnings would cause the parse_warnings array to grow
without bounds as reload() was called.  In an application
where reload() is called repeatedly, the memory usage
of the supervisord process grew over time.

Addresses https://github.com/Supervisor/supervisor/issues/89
Add test for clearing parse_warnings
Note config reloading leak in changelog
Add ruby-supervisor to the third-party list
Don't require config file for supervisorctl

 * Adding require_configfile parameter to options.Options to be able to
   disable config file check for options.ClientOptions.
 * Refactored out searchpaths to become a member of options.Options.
   This made it possible to 1) test for the content of it and 2) disable
   automatic config file detection from within tests (and thus evade
   external side effects that might vary from developer to developer).
 * Adding an additional test of options.ServerOptions to make sure it
   still exits if it can't find a valid configuration file.

This is an initial commit that tries to fix issue #62.

All tests passes on my workstation. However, both `supervisord` and
`supervisorctl` crashed when executed. I will have to look into this.
Renamed `process_config_file()`

Renamed `process_config_file()` to `process_config()`.

The function does so much more than simply process the config file (such
as applying defaults). I also intend to factor out the code that does
not take care of parsing/reading the config file.

All tests pass on my local workstation.
Written a test that reproduces exception

The exception is thrown when

    $ supervisorctl

is executed in the terminal. This exception was the reason I withdrew
the pull request https://github.com/Supervisor/supervisor/pull/71.
Refactoring `Options.process_config()`

Moving a chunk of code out from `Options.process_config()` to
`Options.process_config_file()`. The latter function is now responsible
for only reading the config file while the former initializes config
data structure in general.

This commit makes it possible to skip the reading of an external
(on-disc) config file while still using default values etc.

The test `ControllerTests.test_real_controller_initialization(...)`
still fails because some default config values are not initialized
correctly. All other tests pass.
Fixing failing test

The test `ControllerTests.test_real_controller_initialization()` no
longer fails. This was fixed by making sure
`ClientOptions.plugin_factories` was initialized even though no
configuration file has been read.

All tests now (finally!) pass on my workstation.
Setting default values in one place

Previously default values for certain configuration options were
scattered across multiple places in `ClientOptions`. This commit fixes
this.
Making sure that a test never finds a config file.

The intention of the test is that it is not supposed to find a config
file anywhere on-disc. My local workstation does not have one, but
future testers might.
Support syslog as a log target
Added test for SyslogHandler
Added documentation on the syslog facility.
Fixed tests (now use Mock to mock). Tests now also capture Unicode behavior.
Merge pull request #98 from jaraco/syslog-support

Syslog support
Add changelog note for the new Syslog log handler
Merge pull request #94 from JensRantil/remove_duplicate_config_defaults

Setting default values in one place
Add tip for using environment variables