remove file-existence ensurance of authorized_keys

The setup gets rather complex so a simple existence
ensurance won't work anymore.
fix pathname related issue.
use the current-symlink to refer to git-shell.
only fail on remove, when file not exists.
delete key from authorized_keys-file correctly

When deleting a Key we should only
delete its line in the authorized_keys file.
Since Files#lines returns an enumerator, truncating
before reading would not work. Also File#lines
is deprecated, which is why we will build our
array by using File#each_line.
extract authorized_keys open into own method

Also lock the file while working on it.
adjust generation of authorized_key line

The options can't have whitespace between the
commata.
fix matching of authorized-key lines.
fix load of rails_config for git-shell

This also includes requiring the rails_config gem and
setting GEM_HOME environment variable accordingly.
add relation between ssh-controller and repository.
use git_home instead of git_root

git_root is the actual directory where the bare
git repositories are stored. git_home is the directory
with the bare-git-repo symlinks, which are named
after the name of the repository instead of its id.

Also use the symlink-dir to get to the repositories.
ensure that git-hooks point to current version.
adjust filepath-evaluation for git-hooks.
ensuring compatible types for possible Pathnames.
fix spelling error in Subprocess call.
allow usage of subprocess without rails

The monkey-patch method stringify_keys of Hash
is only defined in a rails environment.
add sidekiq-failures for more detailed infos.
use id to fetch repository in update hook worker.