WIP - Custom hooks POC

This is a rough proof of concept for implementing server-side custom hooks. It is meant to spark discussion. We can add implementation for all types of hooks that git supports. If a user places a properly named hook file in the proper location, gitlab shell will just execute it and pass the proper args based on what the hook type receives on stdin.

Custom hook directory structure would look exactly like the repository directory:
`${namespace}/${repo_name}/pre-receive`, etc

## What's missing in this POC?
1. Obviously, there's not actual code in the custom hooks class.
1. There will probably need to be a new config key for custom hooks directory path.
1. Other hooks types - pre-commit/etc
also 

```
if GitlabPostReceive.new(repo_path, key_id, changes).exec && 
  GitlabCustomHook.new.post_receive(repo_path, key_id, refs).exec
  exit 0 
else 
  exit 1
end
```