Send-signal, payload if hook does not exit and cleanup.

* So, if "send-signal" is set in the hook.path field, a signal will be send with the repo, info, user and request. This allows to process the hook in an attached python method instead of a command /shell script that has to have the correct mode etc.

* The payload will be passed if hook does not exist.
If you wanted to debug what happened you wouldn't send a signal, you would raise an error (or at least don't `except` it) and then let it bubble up to the error handling layer and email reporting.  I don't think we can expect users to implement the same signal receiver that needs to handle 2 different almost-entirely disjoint sets of parameters being passed in.