Pass derived base class type to interface classes.

This allows less verbose and more type-safe signal connections for
objects of derived classes.  Rather than passing a
gtk::widget<gtk::window::c_type> to connect a window to a widget
signal, it can be passed as just a gtk::window.  This prevents the
need for any upcasts to convert the slot's pointer to the actual
expected type.