Gdk.Event: Include GdkEventType in __repr__

https://bugzilla.gnome.org/show_bug.cgi?id=727810
Gdk.Event: Override __setattr__ to set fields based on the event type

Pass the setting of attributes through to the underlying union based
on event type. This mirrors the logic in __getattr__.

https://bugzilla.gnome.org/show_bug.cgi?id=727810
Raise TypeError if arguments are passed to Boxed.__init__

This is a partial revert of
https://git.gnome.org/browse/pygobject/commit/?id=2f2069c9efcd8
which removed a type check in __new__. This adds it back
into __init__. Overrides which define __new__ now have to
filter out any arguments in __init__ and not the other way
around, which is a bit less surprising in the common case.

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