Manage not iterable relationships + support of additional properties

With this PR:
* not iterable relationships are correctly handled
* it is possible to specify some extra properties in an ``__additional_properties__```function in the model. For instance:

```
    class Object(Base):

        @property
        def __additional_properties__(self):
            l10n = {}
            for l in self.l10n:
                l10n[l.lang.code] = l.value
            return { "l10n": l10n } 
```