Add gitlab and gitlab-shell.

I had to make several adjustments to make it work with nixos:

* Replace relative config file lookups with ENV variable.
* Modify gitlab-shell to not clear then environment when running
  pre-receive.
* Modify gitlab-shell to write some environment variables into
  the .authorized_keys file to make sure gitlab-shell reads the
  correct config file.

The current version requires the user to install the gitlab-shell
package into the systemPackages environment because
/run/current-system/sw/bin/gitlab-shell is hard-coded in the
.authorized_keys file.
I tried that initially but the config lookup is relative to where the code is (e.g. `require File.expand_path('../boot', __FILE__)`). I'm not sure how to catch all those weird locations other than with ENV vars.