Use uid's default gid if no gid is set.

This is the behavior that I'd expect. In a god config, if I do this:

    God.watch do |w|
      w.uid = 'theuser'
      w.start = 'my-daemon'
    end

... I would expect "my-daemon" to run as user "theuser", with the
default groups from "theuser".

Without this commit, you end up with a weird environment where a process
is running as a normal user, but still as the root group.

    $ id
    uid=1029(theuser) gid=0(root) groups=1029(theuser),0(root)

The above combination does, in fact, let the process access files that
"theuser" normally wouldn't be able to access.

This commit changes the group assignments so that it runs more like a
login shell.

    $ id
    uid=1029(theuser) gid=1029(theuser) groups=1029(theuser)
Include a uid's supplemental groups.

This makes `w.uid = "user"` start the watched process more like it would
start from a login shell.

This allows a daemon to require the running user to be a member of two
groups.
Process#groups= and Process#initgroups are called more.
Fixes to Slack contact for Ruby <1.9

This fixes:

- One instance of the new hash syntax rather than the old hashrocket
syntax
- A use of the `%` format for strings that used a hash for arguments;
this was introduced in Ruby 1.9
Merge pull request #159 from spraints/groups

Do groups more like login(1)
Revert "Revert "Merge pull request #172 from robmiller/feature/contacts/slack""

This reverts commit 47ee272b02fb3f694d6c775f42709036847fa818.
Merge branch 'feature/contacts/slack' of https://github.com/robmiller/god into slack-hook
Escape curly braces in 1.8
Merge remote-tracking branch 'upstream/master'