Fix not being able to derive from DBusMockObject

Don't use super(self.__class__, self).__init__() since this implies that
it will call the __init__() function of our class instead of the base
class. This fails if we have something like this:

class A(DBusMockObject):
    def __init__(self, a):
        DBusMockObject.__init__(self, ...)

In this example, DBusMockObject's __init__() would end up calling A's
__init__(). Not really what we want.
Allow to add property for non-existent interface

If the interface doesn't exist in the dict yet, create it. This allows
to have several interfaces in a single object and set add the properties
for all interfaces.

This also simplifies how the error of adding a property twice is
handled. Instead of accessing the dict with [] waiting for an exception
we use the dict.get() method.