Use G_DECLARE|DEFINE_INTERFACE() macros
We switch all interfaces to use G_DECLARE|DEFINE_INTERFACE macros. This helps in two different purposes:
- By using macros, it will be easier in the future to replace them with custom ones adding additional functionality applicable to all interfaces.
- We remove the ambiguity introduced in the old implementation with the struct type defining the actual Interface vs the type of an object implementing the interface. They now have different names, e.g. the interface struct type is suffixed with
Interface
.