Use G_TYPE_ERROR and G_TYPE_ARRAY in signal definitions

Before, we used G_TYPE_POINTER, for lack of a better GType. The above GTypes
have been introduced in more recent glib versions.