Split the callable cache into the different types

Instead of doing different things based on the various function types
this adds vfuncs for generate_args_cache() and invoke() which are then
specialized for the various function types. Also add a calling context
to the callable cache which is then used to determine the direction
when generating the arg caches.

This is in preparation for adding closure caches.

https://bugzilla.gnome.org/show_bug.cgi?id=727004
Correctly set the destroy notify for callbacks in closures

https://bugzilla.gnome.org/show_bug.cgi?id=727004
Use the caches for closures, but not yet for marshaling the arguments

Instead of using the various GI functions we use the data from the caches.
This also fixes generating an arg cache for a closure as it was missing some
data or simply setting incorrect data. Also, always included the GITypeInfo
until the closures no longer need it for marshaling the arguments.

https://bugzilla.gnome.org/show_bug.cgi?id=727004
Pass the GIArgument to the closure assign functions

This will be required once we use the caches for marshaling.

https://bugzilla.gnome.org/show_bug.cgi?id=727004
Set the correct meta type for GErrors when marshaling to Python

Otherwise we do not pass the GError into python callbacks and
we also want to convert these into Python Exceptions.

https://bugzilla.gnome.org/show_bug.cgi?id=727004