Make the override of Cinch a bit cleaner

 - Use fd redirection for the socket, instead of disabling close_on_exec
 - Set the environment variable for the fd right before re-exec, instead
   of after connection.
Specify ruby in the re-exec command

Previously, the re-exec only worked if the process was spawned by
executing the script directly (using the shebang). This makes it work
when executing by it using ruby explicitly.
Fix Cinch state after re-exec

The Cinch module stores some IRC state, such as joined channels.
Previously, this would not be correct after a re-exec. This commit does
two things to set the correct state after a re-exec.

 - IRC registration messages is stored in an environment variable. After
   a re-exec they are parsed again. This sets the connection state.
 - The NAMES command is sent to all the channels in the configuration.
   This ensures that the state of each channel is correct.