Fix memory leak for caller allocated GValue out arguments

Swizzle the order of type checks in _cleanup_caller_allocates so
G_TYPE_VALUE arguments are checked before G_TYPE_BOXED. The ordering is
important because G_TYPE_VALUE is a sub-type of boxed and so its specialized
cleanup code was never being called (g_value_unset).
Additionally update check to use g_type_is_a instead of a compare to handle
the potential case of a G_TYPE_VALUE sub-type.

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