Adding some things I needed

Please don't merge yet, this is just a request for comments. Some things are broken(see my notes).

I got it working perfectly with my other code though, it looks much neater than before too!
I think this is too strict. I'd like to support any Python callable, not just proper functions.

Can't you turn the logic around and check for a function pointer?
E.g. check for `CData` and then with `typeof` like in `jack.Port.__init__()`?