Register custom filters

I want to expose an API for registering custom clean and smudge filters via libgit2.

My knowledge of C is rusty, and this is the first time I have looked at libgit2sharp in any great detail. So, I'm going to open this PR early, in the hopes that if anyone has time to spot anything terrible I do along the way they will be able to point me in the right direction :pray: 

###  Todo

- [x] Register and deregsiter a filter
- [x] Define apply callback
- [x] Define check callback
- [x] Define shutdown/init callbacks
- [ ] Tests
Yup, you got it :smile: This is dealt with by unregister inside libgit2.

I have also removed the ability to look up a filter from the registry. After making the ``Filter`` abstract creating concrete instances of a subclass inside the ``FilterRegistry``is not going to work anymore. 

Given that porting over all the ``FilterRegistry`` classes is going to require some design thought any way, I would rather remove this and put some thinking into how this might look later.

The other nice consequence of moving the ```Register``` and  ``Deregister`` pair to ``GlobalSettings`` we no longer have a reason to look up a filter from the registry. You can deregister one by name