Special case signal output arguments which are structs as pass-by-reference

Add a special case which avoids copying of struct arguments marked as output
to signals. Since we don't currently support output arguments, users have
come to rely on a pass-by-reference bug which was fixed and caused this to
regress (bug 722899). Add unittest which is currently failing due to a number
of issues with emit() not supporting type annotations or output arguments
(bug 735693).

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