[GTK] Canvas now doesn't clear the background

Canvas will now respect the bacground of the container on which it is
rendered as long as no mouse events are required.
Fix creation of backend for custom widgets

Now that backends are specified per-class using the BackendType attribute
there is no need to special case widgets that inherit directly from Widget.
The ICustomWidgetBackend is now assigned to Widget using a BackendType
attribute.
Added FrameBox widget

This widget replaces the CustomFrame type in the Frame widget.
Added support for internal children

Internal children of a container are not included in the children list and
the parent hierarchy chain. Internal children are useful for implementing
containers that depend on other containers to lay out widgets.
[GTK] Fix some allocation issues

Fixed the calculation of the mouse position.
Avoid negative sizes in the canvas widget.
[GTK] Mouse position calculation fixes
Added properties for getting the mouse position on events
Fix some issues with mnemonic handling