Custom hooks

This custom hook implementation support pre-receive, post-receive and update hooks. If a gitlab administrator wants to add a custom hook they need to follow these steps:

1. Create a `custom_hooks` directory in the repository directory adjacent to the normal `hooks` directory. For example, if the repo path is `/home/git/repositories/my_group/my_project.git`, the custom hook path will be `/home/git/repositories/my_group/my_project.git/custom_hooks`
1. Create/place a hook of the desired type in this `custom_hooks` directory. 
1. Make the hook file executable and owned by the git user.
1. Profit. The new custom hook should be picked up by gitlab-shell on the next push. If there are errors in the custom hook the push may fail, unless it's post-receive.  If the hook is not owned by git or is not executable the custom hook will silently fail.

## What's missing?
1. Other hooks types - pre-commit/etc
Yes. call_receive_hook() does that  does that for both pre-receive and post-receive custom hooks. 

There may just one difference, though, but the git API is not clear about this. When you do a multiple branch push and the custom pre- and post- receive hooks fail for one or more of the pushed branches, it is not clear how to tell git that some branches failed. I took the choice of not returning success unless the hook returns success for all the branches. The git docs don't talk about this at all. 

The custom update hook calls works exactly as git's.

The tests I did was that I wrote very simple  pre-receive, post-receive, and update hooks that just output what's being fed by the API and tested them all in permutations when returning with exit 0 or exit 1. First did the tests on a standalone vanilla git environment and then verified that we had the  the same behavior inside gitlab by means of gitlab_custom_hook.rb 

My own more complex custom hooks now work the same in either the vanilla git or gitlab.