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
- [x] Tests
Why do you use StdCall? This is the part that's crashing on Mac, as I said, it's a stack imbalance caused by using stdcall, so index is going haywire. Test crashes only happened on functions which had a cdecl (i.e. git index add) after.