Implement the Webhooks API

Hello everyone. I am submitting this pull request for overall code review, I tried to follow the guidelines as much as possible but please feel free to comment on the code so that its quality improves, in particular for example:

- I added the type synonym for RepoName and RepoOwner so that in the type signature you have a better idea what each string value means (I could even make it a tagged type but that might be overkill, what do you think?)
- The records' field names are kind of long but it prevents the overriding of symbols named the same.
I'm not sure about this. It seems to me this is a could be populated with any keys and values, but they will always be strings. I used a `Data.Map.Map String String`. The docs state:

> Required. Key/value pairs to provide settings for this hook. These settings vary between the services and are defined in the github-services repository. Booleans are stored internally as “1” for true, and “0” for false. Any JSON true/false values will be converted automatically.

Maybe we should check numbers are also stored as strings...