UI is now an interface rather than abstract class

To be able to make use of GtkBuilder composite widgets support in a
clean way, we'll have to derive many of the UI classes from different
gtk widget classes and that means we can't derive UI baseclass anymore.

So lets make UI an interface.