Update `serialize` method to not inlcuded empty compartments

Here's an updated PR to allow for embedded documents to not be required. This also ensures that empty compartments are not included in a serialized document.
Good question. However, I am of the opinion that a developer should be familiar with the API as described by documentation. If I'm using a class, I should (arguably) know the parameters for its constructor constructors parameters.`Embedded` is a subclass of `Attr` and it should be obvious in the documentation of that fact. If that is successful, I would argue that the constructor could be written as::

```python
class Embedded(Attr):
    def __init__(self, curie=None, **kwargs):
        super(Embedded, self).__init__(**kwargs)
        self.curie = curie
```

But perhaps thats short sighted?