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.
Like this?

```python
def serialize(cls, value, **kwargs):
    result = OrderedDict()
    for attr in cls.__attrs__:
        compartment = result
        try:
            value = attr.serialize(value, **kwargs)
        except (AttributeError, KeyError):
            if attr.required:
                raise
        if attr.compartment is not None:
            compartment = result.setdefault(attr.compartment, OrderedDict())
        compartment[attr.key] = value
    return result
```