gtk2: implement GdkEvent class hierarchy by defining sub-types

GitHub: #180

TODO:
  * Fix styles
  * Backport to Ruby/GDK3